|
PTLib
Version 2.18.8
|
A synchronous queue of objects. More...
#include <syncthrd.h>


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 PMutex & | GetMutex () const |
| __inline PMutex & | GetMutex () |
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 PObject * | PTraceObjectInstance () const |
| virtual PObject * | Clone () 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 PObject * | PTraceObjectInstance (const char *) |
| static __inline const PObject * | PTraceObjectInstance (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... | |
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.
| typedef std::queue<T> PSyncQueue< T >::BaseQueue |
| enum PSyncQueue::State |
|
inline |
Construct synchronous queue.
|
inline |
Destroy synchronous queue.
|
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().
|
inline |
Dequeue an object from the synchronous queue.
|
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.
|
inline |
Determine if queue is empty.
|
inline |
Enqueue an object to the synchronous queue.
|
inline |
|
inline |
|
inline |
|
protected |
|
inline |
Restart the queue after it has been closed.
|
inline |
Get the current size of the queue.
|
protected |
Referenced by PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Close(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Dequeue(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Drain(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Enqueue(), and PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Restart().
|
protected |
|
protected |
Referenced by PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Close(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Dequeue(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Drain(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::empty(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Enqueue(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Restart(), and PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::size().
|
protected |
Referenced by PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Close(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Dequeue(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Drain(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Enqueue(), PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::IsOpen(), and PSyncQueue< PQueuedThreadPool::QueuedWorkerThread::QueuedWork >::Restart().