Babel
Epitech's C++ VoIP project
Public Member Functions | Protected Attributes | List of all members
Babel::TSQueue< T > Class Template Reference

Thread Safe queue. More...

#include <TSQueue.hpp>

Collaboration diagram for Babel::TSQueue< T >:

Public Member Functions

 TSQueue ()=default
 
 TSQueue (const TSQueue< T > &)=delete
 
 ~TSQueue ()
 
const T & front ()
 Returns a constant reference to the first element of the queue. More...
 
const T & back ()
 Returns a constant reference to the last element of the queue. More...
 
popFront ()
 Removes and returns the first element of the queue. More...
 
popBack ()
 Removes and returns the last element of the queue. More...
 
void pushFront (const T &t)
 Adds an element to the beginning of the queue. More...
 
void pushBack (const T &t)
 Adds an element to the beginning of the queue. More...
 
bool empty ()
 Returns true if the queue is empty, false otherwise. More...
 
size_t count ()
 Returns the number of elements in the queue. More...
 
void clear ()
 Removes every elements in the queue. More...
 
template<typename TimeType >
void waitFor (std::chrono::duration< TimeType > time)
 Block a thread until the queue is non empty or the timeout is reached. More...
 

Protected Attributes

std::mutex _mutex
 
std::deque< T > _queue
 
std::condition_variable _blocker
 
std::mutex _waitMutex
 

Detailed Description

template<typename T>
class Babel::TSQueue< T >

Thread Safe queue.

Note
Should be the same functionality as std::queue

Constructor & Destructor Documentation

◆ TSQueue() [1/2]

template<typename T >
Babel::TSQueue< T >::TSQueue ( )
default

◆ TSQueue() [2/2]

template<typename T >
Babel::TSQueue< T >::TSQueue ( const TSQueue< T > &  )
delete

◆ ~TSQueue()

template<typename T >
Babel::TSQueue< T >::~TSQueue ( )
inline

Member Function Documentation

◆ back()

template<typename T >
const T& Babel::TSQueue< T >::back ( )
inline

Returns a constant reference to the last element of the queue.

◆ clear()

template<typename T >
void Babel::TSQueue< T >::clear ( )
inline

Removes every elements in the queue.

◆ count()

template<typename T >
size_t Babel::TSQueue< T >::count ( )
inline

Returns the number of elements in the queue.

◆ empty()

template<typename T >
bool Babel::TSQueue< T >::empty ( )
inline

Returns true if the queue is empty, false otherwise.

◆ front()

template<typename T >
const T& Babel::TSQueue< T >::front ( )
inline

Returns a constant reference to the first element of the queue.

◆ popBack()

template<typename T >
T Babel::TSQueue< T >::popBack ( )
inline

Removes and returns the last element of the queue.

◆ popFront()

template<typename T >
T Babel::TSQueue< T >::popFront ( )
inline

Removes and returns the first element of the queue.

◆ pushBack()

template<typename T >
void Babel::TSQueue< T >::pushBack ( const T &  t)
inline

Adds an element to the beginning of the queue.

◆ pushFront()

template<typename T >
void Babel::TSQueue< T >::pushFront ( const T &  t)
inline

Adds an element to the beginning of the queue.

◆ waitFor()

template<typename T >
template<typename TimeType >
void Babel::TSQueue< T >::waitFor ( std::chrono::duration< TimeType >  time)
inline

Block a thread until the queue is non empty or the timeout is reached.

Parameters
timeThe number time before release

Member Data Documentation

◆ _blocker

template<typename T >
std::condition_variable Babel::TSQueue< T >::_blocker
protected

◆ _mutex

template<typename T >
std::mutex Babel::TSQueue< T >::_mutex
protected

◆ _queue

template<typename T >
std::deque<T> Babel::TSQueue< T >::_queue
protected

◆ _waitMutex

template<typename T >
std::mutex Babel::TSQueue< T >::_waitMutex
protected

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