Android-cuttlefish cvd tool
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
cuttlefish::Multiplexer< T, Queue > Class Template Reference

#include <multiplexer.h>

Collaboration diagram for cuttlefish::Multiplexer< T, Queue >:
Collaboration graph
[legend]

Public Types

using QueuePtr = std::unique_ptr< Queue >
 
using QueueSelector = std::function< int(void)>
 

Public Member Functions

 Multiplexer ()
 
int RegisterQueue (QueuePtr &&queue)
 
void Push (const int idx, T &&t)
 
Pop (QueueSelector selector)
 
Pop ()
 
bool IsEmpty (const int idx)
 
void SemWait ()
 

Static Public Member Functions

template<typename... Args>
static QueuePtr CreateQueue (Args &&... args)
 

Private Member Functions

void CheckIdx (const int idx)
 

Private Attributes

Semaphore sem_items_
 
std::vector< QueuePtrqueues_
 
QueuePtr null_ptr_
 

Member Typedef Documentation

◆ QueuePtr

template<typename T , typename Queue >
using cuttlefish::Multiplexer< T, Queue >::QueuePtr = std::unique_ptr<Queue>

◆ QueueSelector

template<typename T , typename Queue >
using cuttlefish::Multiplexer< T, Queue >::QueueSelector = std::function<int(void)>

Constructor & Destructor Documentation

◆ Multiplexer()

template<typename T , typename Queue >
cuttlefish::Multiplexer< T, Queue >::Multiplexer ( )
inline

Member Function Documentation

◆ CheckIdx()

template<typename T , typename Queue >
void cuttlefish::Multiplexer< T, Queue >::CheckIdx ( const int  idx)
inlineprivate

◆ CreateQueue()

template<typename T , typename Queue >
template<typename... Args>
static QueuePtr cuttlefish::Multiplexer< T, Queue >::CreateQueue ( Args &&...  args)
inlinestatic

◆ IsEmpty()

template<typename T , typename Queue >
bool cuttlefish::Multiplexer< T, Queue >::IsEmpty ( const int  idx)
inline

◆ Pop() [1/2]

template<typename T , typename Queue >
T cuttlefish::Multiplexer< T, Queue >::Pop ( )
inline

◆ Pop() [2/2]

template<typename T , typename Queue >
T cuttlefish::Multiplexer< T, Queue >::Pop ( QueueSelector  selector)
inline

◆ Push()

template<typename T , typename Queue >
void cuttlefish::Multiplexer< T, Queue >::Push ( const int  idx,
T &&  t 
)
inline

◆ RegisterQueue()

template<typename T , typename Queue >
int cuttlefish::Multiplexer< T, Queue >::RegisterQueue ( QueuePtr &&  queue)
inline

◆ SemWait()

template<typename T , typename Queue >
void cuttlefish::Multiplexer< T, Queue >::SemWait ( )
inline

Member Data Documentation

◆ null_ptr_

template<typename T , typename Queue >
QueuePtr cuttlefish::Multiplexer< T, Queue >::null_ptr_
private

◆ queues_

template<typename T , typename Queue >
std::vector<QueuePtr> cuttlefish::Multiplexer< T, Queue >::queues_
private

◆ sem_items_

template<typename T , typename Queue >
Semaphore cuttlefish::Multiplexer< T, Queue >::sem_items_
private

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