uvco 0.1
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
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::optional< 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 ( )
236{ return false; }

◆ await_resume()

void uvco::StreamBase::ShutdownAwaiter_::await_resume ( )
245 {
246 BOOST_ASSERT(status_);
247 if (status_ && *status_ != 0) {
248 throw UvcoException{*status_, "StreamBase::shutdown() encountered error"};
249 }
250}
std::optional< uv_status > status_
Definition stream.h:115

◆ await_suspend()

bool uvco::StreamBase::ShutdownAwaiter_::await_suspend ( std::coroutine_handle<>  handle)
239 {
240 BOOST_ASSERT(!handle_);
241 handle_ = handle;
242 return true;
243}
std::optional< std::coroutine_handle<> > handle_
Definition stream.h:114

◆ onShutdown()

void uvco::StreamBase::ShutdownAwaiter_::onShutdown ( uv_shutdown_t *  req,
uv_status  status 
)
static
253 {
254 auto *awaiter = getRequestData<ShutdownAwaiter_>(req);
255 awaiter->status_ = status;
256 if (awaiter->handle_) {
257 auto handle = awaiter->handle_.value();
258 awaiter->handle_.reset();
259 Loop::enqueue(handle);
260 }
261}
static void enqueue(std::coroutine_handle<> handle)
Definition loop.cc:73

Member Data Documentation

◆ handle_

std::optional<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 files: