uvco 0.1
Loading...
Searching...
No Matches
uvco::StreamBase::ShutdownAwaiter_ Struct Reference

Public Member Functions

 ShutdownAwaiter_ ()=default
bool await_ready ()
bool await_suspend (std::coroutine_handle<> handle)
void await_resume ()

Static Public Member Functions

static void onShutdown (uv_shutdown_t *req, uv_status status)

Public Attributes

std::coroutine_handle handle_
std::optional< uv_statusstatus_

Constructor & Destructor Documentation

◆ ShutdownAwaiter_()

uvco::StreamBase::ShutdownAwaiter_::ShutdownAwaiter_ ( )
default

Member Function Documentation

◆ await_ready()

bool uvco::StreamBase::ShutdownAwaiter_::await_ready ( )
317{ return false; }

◆ await_resume()

void uvco::StreamBase::ShutdownAwaiter_::await_resume ( )
326 {
327 BOOST_ASSERT(status_);
328 if (status_ && *status_ != 0) {
329 throw UvcoException{*status_, "StreamBase::shutdown() encountered error"};
330 }
331}
std::optional< uv_status > status_
Definition stream.cc:37

◆ await_suspend()

bool uvco::StreamBase::ShutdownAwaiter_::await_suspend ( std::coroutine_handle<> handle)
320 {
321 BOOST_ASSERT(!handle_);
322 handle_ = handle;
323 return true;
324}
std::coroutine_handle handle_
Definition stream.cc:36

◆ onShutdown()

void uvco::StreamBase::ShutdownAwaiter_::onShutdown ( uv_shutdown_t * req,
uv_status status )
static
334 {
335 auto *awaiter = getRequestData<ShutdownAwaiter_>(req);
336 awaiter->status_ = status;
337 if (awaiter->handle_) {
338 Loop::enqueue(awaiter->handle_);
339 awaiter->handle_ = nullptr;
340 }
341}
static void enqueue(std::coroutine_handle<> handle)
Definition loop.cc:94
Into * getRequestData(const Request *req)
Obtain data pointer set on request with nullptr check and type cast.
Definition internal_utils.h:59

Member Data Documentation

◆ handle_

std::coroutine_handle uvco::StreamBase::ShutdownAwaiter_::handle_

◆ status_

std::optional<uv_status> uvco::StreamBase::ShutdownAwaiter_::status_

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