uvco 0.1
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | List of all members
uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_ Struct Reference

Public Types

using Accepted = std::variant<uv_status, StreamType>
 

Public Member Functions

 ConnectionAwaiter_ (UvStreamType &socket)
 
bool await_ready () const
 
bool await_suspend (std::coroutine_handle<> handle)
 
bool await_resume () const
 
void stop ()
 Stop a listener coroutine.
 

Public Attributes

UvStreamType & socket_
 
std::optional< std::coroutine_handle<> > handle_
 
std::vector< Acceptedaccepted_
 
bool stopped_ = false
 

Member Typedef Documentation

◆ Accepted

template<typename UvStreamType , typename StreamType >
using uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::Accepted = std::variant<uv_status, StreamType>

Constructor & Destructor Documentation

◆ ConnectionAwaiter_()

template<typename UvStreamType , typename StreamType >
uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::ConnectionAwaiter_ ( UvStreamType &  socket)
inlineexplicit
65 : socket_{socket} {
66 accepted_.reserve(4);
67 }
std::vector< Accepted > accepted_
Definition stream_server_base.h:82
UvStreamType & socket_
Definition stream_server_base.h:77

Member Function Documentation

◆ await_ready()

template<typename UvStreamType , typename StreamType >
bool uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::await_ready ( ) const
140 {
141 return !accepted_.empty();
142}

◆ await_resume()

template<typename UvStreamType , typename StreamType >
bool uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::await_resume ( ) const
inline
72{ return !stopped_; }
bool stopped_
Definition stream_server_base.h:84

◆ await_suspend()

template<typename UvStreamType , typename StreamType >
bool uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::await_suspend ( std::coroutine_handle<>  handle)
132 {
133 BOOST_ASSERT(!handle_);
134 handle_ = handle;
135 return true;
136}
std::optional< std::coroutine_handle<> > handle_
Definition stream_server_base.h:78

◆ stop()

template<typename UvStreamType , typename StreamType >
void uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::stop ( )

Stop a listener coroutine.

116 {
117 if (stopped_) {
118 return;
119 }
120 stopped_ = true;
121 if (handle_) {
122 // Synchronous resume to ensure that the listener is stopped by the time
123 // the function returns.
124 const auto handle = *handle_;
125 handle_.reset();
126 handle.resume();
127 }
128}

Member Data Documentation

◆ accepted_

template<typename UvStreamType , typename StreamType >
std::vector<Accepted> uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::accepted_

◆ handle_

template<typename UvStreamType , typename StreamType >
std::optional<std::coroutine_handle<> > uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::handle_

◆ socket_

template<typename UvStreamType , typename StreamType >
UvStreamType& uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::socket_

◆ stopped_

template<typename UvStreamType , typename StreamType >
bool uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::stopped_ = false

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