uvco 0.1
Loading...
Searching...
No Matches
uvco::TcpClient::ConnectAwaiter_ Struct Reference

Public Member Functions

 ConnectAwaiter_ ()
 ~ConnectAwaiter_ ()
bool await_ready () const
bool await_suspend (std::coroutine_handle<> handle)
TcpStream await_resume ()
void onConnect (uv_status status)

Public Attributes

std::unique_ptr< uv_connect_t > req_
std::unique_ptr< uv_tcp_t > socket_
std::coroutine_handle handle_
std::optional< uv_statusstatus_

Constructor & Destructor Documentation

◆ ConnectAwaiter_()

uvco::TcpClient::ConnectAwaiter_::ConnectAwaiter_ ( )
46 : req_{std::make_unique<uv_connect_t>()},
47 socket_{std::make_unique<uv_tcp_t>()} {
48 setRequestData(req_.get(), this);
49}
void setRequestData(Request *req, Data *data)
Set data pointer on request.
Definition internal_utils.h:90
std::unique_ptr< uv_connect_t > req_
Definition tcp.cc:39
std::unique_ptr< uv_tcp_t > socket_
Definition tcp.cc:40

◆ ~ConnectAwaiter_()

uvco::TcpClient::ConnectAwaiter_::~ConnectAwaiter_ ( )
64 {
65 if (socket_ != nullptr) {
66 closeHandle(socket_.release(), uvCloseReset);
67 }
68}
void closeHandle(Handle *handle, void(*closer)(CloserArg *, void(*)(uv_handle_t *)))
Definition close.h:37

Member Function Documentation

◆ await_ready()

bool uvco::TcpClient::ConnectAwaiter_::await_ready ( ) const
nodiscard
70 {
71 return status_.has_value();
72}
std::optional< uv_status > status_
Definition tcp.cc:42

◆ await_resume()

TcpStream uvco::TcpClient::ConnectAwaiter_::await_resume ( )
80 {
81 BOOST_ASSERT(status_);
82 if (status_.value() != 0) {
83 throw UvcoException{status_.value(),
84 "TcpClient::connect() connection failed"};
85 }
86 return TcpStream{std::move(socket_)};
87}

◆ await_suspend()

bool uvco::TcpClient::ConnectAwaiter_::await_suspend ( std::coroutine_handle<> handle)
74 {
75 BOOST_ASSERT(!handle_);
76 handle_ = handle;
77 return true;
78}
std::coroutine_handle handle_
Definition tcp.cc:41

◆ onConnect()

void uvco::TcpClient::ConnectAwaiter_::onConnect ( uv_status status)
89 {
90 status_ = status;
91 if (handle_ != nullptr) {
93 handle_ = nullptr;
94 }
95}
static void enqueue(std::coroutine_handle<> handle)
Definition loop.cc:94

Member Data Documentation

◆ handle_

std::coroutine_handle uvco::TcpClient::ConnectAwaiter_::handle_

◆ req_

std::unique_ptr<uv_connect_t> uvco::TcpClient::ConnectAwaiter_::req_

◆ socket_

std::unique_ptr<uv_tcp_t> uvco::TcpClient::ConnectAwaiter_::socket_

◆ status_

std::optional<uv_status> uvco::TcpClient::ConnectAwaiter_::status_

The documentation for this struct was generated from the following file: