uvco 0.1
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
uvco::Channel< T >::ChannelAwaiter_ Struct Reference
Collaboration diagram for uvco::Channel< T >::ChannelAwaiter_:
Collaboration graph
[legend]

Public Member Functions

 ChannelAwaiter_ (BoundedQueue< T > &queue, BoundedQueue< std::coroutine_handle<> > &slot)
 
bool await_ready ()
 
bool await_suspend (std::coroutine_handle<> handle)
 
bool await_resume ()
 

Public Attributes

BoundedQueue< T > & queue_
 
BoundedQueue< std::coroutine_handle<> > & waiters_
 

Constructor & Destructor Documentation

◆ ChannelAwaiter_()

template<typename T >
uvco::Channel< T >::ChannelAwaiter_::ChannelAwaiter_ ( BoundedQueue< T > &  queue,
BoundedQueue< std::coroutine_handle<> > &  slot 
)
inlineexplicit
139 : queue_{queue}, waiters_{slot} {}
Promise< T > get()
Definition channel.h:83
BoundedQueue< T > & queue_
Definition channel.h:156
BoundedQueue< std::coroutine_handle<> > & waiters_
Definition channel.h:157

Member Function Documentation

◆ await_ready()

template<typename T >
bool uvco::Channel< T >::ChannelAwaiter_::await_ready ( )
inline
141{ return false; }

◆ await_resume()

template<typename T >
bool uvco::Channel< T >::ChannelAwaiter_::await_resume ( )
inline
153{ return !queue_.empty(); }

◆ await_suspend()

template<typename T >
bool uvco::Channel< T >::ChannelAwaiter_::await_suspend ( std::coroutine_handle<>  handle)
inline
143 {
144 if (!waiters_.hasSpace()) {
145 throw UvcoException(
146 UV_EBUSY,
147 "too many coroutines waiting for reading/writing a channel");
148 }
149 waiters_.put(handle);
150 return true;
151 }
void put(U &&elem)
Push an item to the queue.
Definition bounded_queue.h:29
bool hasSpace() const
size() < capacity()
Definition bounded_queue.h:61

Member Data Documentation

◆ queue_

template<typename T >
BoundedQueue<T>& uvco::Channel< T >::ChannelAwaiter_::queue_

◆ waiters_

template<typename T >
BoundedQueue<std::coroutine_handle<> >& uvco::Channel< T >::ChannelAwaiter_::waiters_

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