uvco 0.1
Loading...
Searching...
No Matches
uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_ Struct Reference

Public Types

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

Public Member Functions

 ConnectionAwaiter_ (UvStreamType &socket)
 ~ConnectionAwaiter_ ()
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::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
33 : socket_{socket} {
34 accepted_.reserve(4);
35 setData(&socket_, this);
36 }
Definition stream_server_base.h:35
void setData(Handle *handle, Data *data)
Obtain data pointer set on request with type cast. Data may be nullptr.
Definition internal_utils.h:77
std::vector< Accepted > accepted_
Definition stream_server_base_impl.cc:53
UvStreamType & socket_
Definition stream_server_base_impl.cc:48

◆ ~ConnectionAwaiter_()

template<typename UvStreamType, typename StreamType>
uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::~ConnectionAwaiter_ ( )
inline
37{ resetData(&socket_); }
void resetData(Handle *handle)
Reset data pointer on handle to nullptr.
Definition internal_utils.h:83

Member Function Documentation

◆ await_ready()

template<typename UvStreamType, typename StreamType>
bool uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::await_ready ( ) const
nodiscard
83 {
84 return !accepted_.empty();
85}

◆ await_resume()

template<typename UvStreamType, typename StreamType>
bool uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::await_resume ( ) const
inlinenodiscard
43{ return !stopped_; }
bool stopped_
Definition stream_server_base_impl.cc:55

◆ await_suspend()

template<typename UvStreamType, typename StreamType>
bool uvco::StreamServerBase< UvStreamType, StreamType >::ConnectionAwaiter_::await_suspend ( std::coroutine_handle<> handle)
75 {
76 BOOST_ASSERT(handle_ == nullptr);
78 return true;
79}
std::coroutine_handle handle_
Definition stream_server_base_impl.cc:49

◆ stop()

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

Stop a listener coroutine.

59 {
60 if (stopped_) {
61 return;
62 }
63 stopped_ = true;
64 if (handle_ != nullptr) {
65 // Synchronous resume to ensure that the listener is stopped by the time
66 // the function returns.
68 handle_ = nullptr;
69 handle.resume();
70 }
71}

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::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 file: