CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::Channel< T, Lockable >::Reader Class Referencefinal

Awaitable reader for Channel More...

#include <CeresEngine/Foundation/Channel.hpp>

Public Member Functions

 Reader (const Reader &)=delete
 Deleted copy constructor.
 
Readeroperator= (const Reader &)=delete
 Deleted copy assignment operator.
 
 Reader (Reader &&rhs) noexcept
 Creates a new reader by moving the contents of another.
 
Readeroperator= (Reader &&rhs) noexcept
 Assigns the reader by moving the contents of another.
 
 ~Reader () noexcept=default
 Destroys the reader.
 
bool await_ready () const &
 
void await_suspend (CoroutineHandle coro) &
 
Optional< Tawait_resume () &
 

Private Member Functions

 Reader (Channel &ch) noexcept
 Creates a new channel reader.
 

Private Attributes

friend LinkedList< Reader >
 
friend Channel
 
Optional< Tvalue = std::nullopt
 The address of value.
 
Optional< CoroutineHandlehandle = nullptr
 The coroutine handle.
 
union { 
 
   Reader *   next = nullptr 
 Next reader in the queue. More...
 
   Channel *   channel 
 The channel to push this reader. More...
 
};  
 

Detailed Description

template<typename T, typename Lockable = NullLockable>
class CeresEngine::Channel< T, Lockable >::Reader

Awaitable reader for Channel

Constructor & Destructor Documentation

◆ Reader() [1/3]

template<typename T , typename Lockable = NullLockable>
CeresEngine::Channel< T, Lockable >::Reader::Reader ( Channel ch)
inlineexplicitprivatenoexcept

Creates a new channel reader.

Parameters
chThe channel owning the reader

◆ Reader() [2/3]

template<typename T , typename Lockable = NullLockable>
CeresEngine::Channel< T, Lockable >::Reader::Reader ( const Reader )
delete

Deleted copy constructor.

◆ Reader() [3/3]

template<typename T , typename Lockable = NullLockable>
CeresEngine::Channel< T, Lockable >::Reader::Reader ( Reader &&  rhs)
inlinenoexcept

Creates a new reader by moving the contents of another.

Parameters
rhsThe instance to move from

◆ ~Reader()

template<typename T , typename Lockable = NullLockable>
CeresEngine::Channel< T, Lockable >::Reader::~Reader ( )
defaultnoexcept

Destroys the reader.

Member Function Documentation

◆ await_ready()

template<typename T , typename Lockable >
bool CeresEngine::Channel< T, Lockable >::Reader::await_ready ( ) const &

◆ await_resume()

template<typename T , typename Lockable >
Optional< T > CeresEngine::Channel< T, Lockable >::Reader::await_resume ( ) &

◆ await_suspend()

template<typename T , typename Lockable >
void CeresEngine::Channel< T, Lockable >::Reader::await_suspend ( CoroutineHandle  coro) &

◆ operator=() [1/2]

template<typename T , typename Lockable = NullLockable>
Reader & CeresEngine::Channel< T, Lockable >::Reader::operator= ( const Reader )
delete

Deleted copy assignment operator.

◆ operator=() [2/2]

template<typename T , typename Lockable = NullLockable>
Reader & CeresEngine::Channel< T, Lockable >::Reader::operator= ( Reader &&  rhs)
inlinenoexcept

Assigns the reader by moving the contents of another.

Parameters
rhsThe instance to move from
Returns
*this

Member Data Documentation

◆ [union]

◆ Channel

template<typename T , typename Lockable = NullLockable>
friend CeresEngine::Channel< T, Lockable >::Reader::Channel
private

◆ channel

template<typename T , typename Lockable = NullLockable>
Channel* CeresEngine::Channel< T, Lockable >::Reader::channel

The channel to push this reader.

◆ handle

template<typename T , typename Lockable = NullLockable>
Optional<CoroutineHandle> CeresEngine::Channel< T, Lockable >::Reader::handle = nullptr
mutableprivate

The coroutine handle.

◆ LinkedList< Reader >

template<typename T , typename Lockable = NullLockable>
friend CeresEngine::Channel< T, Lockable >::Reader::LinkedList< Reader >
private

◆ next

template<typename T , typename Lockable = NullLockable>
Reader* CeresEngine::Channel< T, Lockable >::Reader::next = nullptr

Next reader in the queue.

◆ value

template<typename T , typename Lockable = NullLockable>
Optional<T> CeresEngine::Channel< T, Lockable >::Reader::value = std::nullopt
mutableprivate

The address of value.


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