PTLib  Version 2.18.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PSyncQueue< T > Class Template Reference

A synchronous queue of objects. More...

#include <syncthrd.h>

Inheritance diagram for PSyncQueue< T >:
Collaboration diagram for PSyncQueue< T >:

Public Types

enum  State { e_Open, e_Blocked, e_Draining, e_Closed }
 
typedef std::queue< T > BaseQueue
 
- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
 

Public Member Functions

 PSyncQueue ()
 Construct synchronous queue. More...
 
 ~PSyncQueue ()
 Destroy synchronous queue. More...
 
bool Enqueue (const T &obj)
 Enqueue an object to the synchronous queue. More...
 
bool Dequeue (T &value, const PTimeInterval &timeout=PMaxTimeInterval)
 Dequeue an object from the synchronous queue. More...
 
void Drain (bool wait)
 Begin graceful draining of the queue. More...
 
void Close (bool wait)
 Close the queue and break block in Dequeue() function. More...
 
bool IsOpen () const
 
void Restart ()
 Restart the queue after it has been closed. More...
 
size_t size () const
 Get the current size of the queue. More...
 
bool empty () const
 Determine if queue is empty. More...
 
__inline const PMutexGetMutex () const
 
__inline PMutexGetMutex ()
 
- Public Member Functions inherited from PObject
__inline unsigned GetTraceContextIdentifier () const
 Get PTRACE context identifier. More...
 
__inline void SetTraceContextIdentifier (unsigned id)
 
__inline void SetTraceContextIdentifier (const PObject &obj)
 
__inline void SetTraceContextIdentifier (const PObject *obj)
 
__inline void CopyTraceContextIdentifier (PObject &obj) const
 
__inline void CopyTraceContextIdentifier (PObject *obj) const
 
virtual ~PObject ()
 
__inline const char * GetClass () const
 
__inline bool IsClass (const char *name) const
 
__inline const PObjectPTraceObjectInstance () const
 
virtual PObjectClone () const
 Create a copy of the class on the heap. More...
 
template<class CLS >
CLS * CloneAs () const
 As for Clone() but converts to specified type. More...
 
virtual PINDEX HashFunction () const
 This function yields a hash value required by the PDictionary class. More...
 
virtual Comparison Compare (const PObject &obj) const
 Compare the two objects and return their relative rank. More...
 
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
 Determine the byte wise comparison of two objects. More...
 
bool operator== (const PObject &obj) const
 Compare the two objects. More...
 
bool operator!= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator< (const PObject &obj) const
 Compare the two objects. More...
 
bool operator> (const PObject &obj) const
 Compare the two objects. More...
 
bool operator<= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator>= (const PObject &obj) const
 Compare the two objects. More...
 
virtual void PrintOn (ostream &strm) const
 Output the contents of the object to the stream. More...
 
virtual void ReadFrom (istream &strm)
 Input the contents of the object from the stream. More...
 

Protected Member Functions

 PDECLARE_MUTEX (m_mutex)
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 

Protected Attributes

BaseQueue m_queue
 
State m_state
 
PSemaphore m_available
 
PSyncPoint m_closed
 
- Protected Attributes inherited from PObject
unsigned m_traceContextIdentifier
 

Additional Inherited Members

- Static Public Member Functions inherited from PObject
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject *from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject *from)
 
static __inline const char * Class ()
 
static __inline const PObjectPTraceObjectInstance (const char *)
 
static __inline const PObjectPTraceObjectInstance (const PObject *obj)
 
template<typename T >
static Comparison Compare2 (T v1, T v2)
 Compare two types, returning Comparison type. More...
 
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect() More...
 

Detailed Description

template<class T>
class PSyncQueue< T >

A synchronous queue of objects.

This implements a queue of objects between threads. The dequeue action will always block until an object is placed into the queue.

Member Typedef Documentation

template<class T>
typedef std::queue<T> PSyncQueue< T >::BaseQueue

Member Enumeration Documentation

template<class T>
enum PSyncQueue::State
Enumerator
e_Open 
e_Blocked 
e_Draining 
e_Closed 

Constructor & Destructor Documentation

template<class T>
PSyncQueue< T >::PSyncQueue ( )
inline

Construct synchronous queue.

template<class T>
PSyncQueue< T >::~PSyncQueue ( )
inline

Destroy synchronous queue.

Member Function Documentation

template<class T>
void PSyncQueue< T >::Close ( bool  wait)
inline

Close the queue and break block in Dequeue() function.

This may optionally wait for Dequeue() to exit before returning.

Referenced by PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::~PSyncQueue().

template<class T>
bool PSyncQueue< T >::Dequeue ( T &  value,
const PTimeInterval timeout = PMaxTimeInterval 
)
inline

Dequeue an object from the synchronous queue.

Returns
false if a timeout occurs, or the queue was flushed.
template<class T>
void PSyncQueue< T >::Drain ( bool  wait)
inline

Begin graceful draining of the queue.

No further Enqueues will be accepted, and the queue will close automatically once empty. This may optionally wait for Dequeue() to exit before returning.

template<class T>
bool PSyncQueue< T >::empty ( ) const
inline

Determine if queue is empty.

template<class T>
bool PSyncQueue< T >::Enqueue ( const T &  obj)
inline

Enqueue an object to the synchronous queue.

template<class T>
__inline const PMutex& PSyncQueue< T >::GetMutex ( ) const
inline
template<class T>
__inline PMutex& PSyncQueue< T >::GetMutex ( )
inline
template<class T>
bool PSyncQueue< T >::IsOpen ( ) const
inline
template<class T>
PSyncQueue< T >::PDECLARE_MUTEX ( m_mutex  )
protected
template<class T>
void PSyncQueue< T >::Restart ( )
inline

Restart the queue after it has been closed.

template<class T>
size_t PSyncQueue< T >::size ( ) const
inline

Get the current size of the queue.

Member Data Documentation


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