Manage a thread-safe queue of objects through reference pointers. More...
#include <containers.h>


Public Member Functions | |
| ObjectProtocol * | fifo (timeout_t timeout=0) |
| Get and remove last object posted to the queue. | |
| size_t | getCount (void) |
| Get number of object points currently in the queue. | |
| ObjectProtocol * | lifo (timeout_t timeout=0) |
| Get and remove first object posted to the queue. | |
| bool | post (ObjectProtocol *object, timeout_t timeout=0) |
| Post an object into the queue by it's pointer. | |
| queue (mempager *pager=NULL, size_t number=0) | |
| Create a queue that uses a memory pager for internally managed member objects for a specified maximum number of object pointers. | |
| bool | remove (ObjectProtocol *object) |
| Remove a specific object pointer for the queue. | |
| ~queue () | |
| Destroy queue. | |
Static Public Member Functions | |
| static size_t | count (queue &queue) |
| Convenience function to get count of objects in the queue. | |
| static ObjectProtocol * | fifo (queue &queue, timeout_t timeout=0) |
| Convenience function get first object from the queue. | |
| static ObjectProtocol * | lifo (queue &queue, timeout_t timeout=0) |
| Convenience function get last object from the queue. | |
| static bool | post (queue &queue, ObjectProtocol *object, timeout_t timeout=0) |
| Convenience function to post object into the queue. | |
| static bool | remove (queue &queue, ObjectProtocol *object) |
| Convenience function to remove an object from the queue. | |
Protected Attributes | |
| size_t | limit |
Friends | |
| class | member |
Manage a thread-safe queue of objects through reference pointers.
This can be particularly interesting when used to enqueue/dequeue reference counted managed objects. Thread-safe access is managed through a conditional. Both lifo and fifo forms of queue access may be used. A pool of self-managed member objects are used to operate the queue. This queue is optimized for fifo access; while lifo is supported, it will be slow. If you need primarily lifo, you should use stack instead.
Definition at line 203 of file containers.h.
| ucommon::queue::queue | ( | mempager * | pager = NULL, |
|
| size_t | number = 0 | |||
| ) |
Create a queue that uses a memory pager for internally managed member objects for a specified maximum number of object pointers.
| pager | to use for internal member object or NULL to use heap. | |
| number | of pointers that can be in the queue or 0 for unlimited. size limit. |
| ucommon::queue::~queue | ( | ) |
Destroy queue.
If no mempager is used, then frees heap.
| static size_t ucommon::queue::count | ( | queue & | queue | ) | [inline, static] |
Convenience function to get count of objects in the queue.
| queue | to count. |
Definition at line 322 of file containers.h.

| static ObjectProtocol* ucommon::queue::fifo | ( | queue & | queue, | |
| timeout_t | timeout = 0 | |||
| ) | [inline, static] |
Convenience function get first object from the queue.
| queue | to get from. | |
| timeout | to wait if empty. |
Definition at line 305 of file containers.h.

| ObjectProtocol* ucommon::queue::fifo | ( | timeout_t | timeout = 0 |
) |
Get and remove last object posted to the queue.
This can wait for a specified timeout of the queue is empty. The object is still retained and must be released or deleted by the receiving function.
| timeout | to wait if empty in milliseconds. |
Reimplemented in ucommon::queueof< T >.
| size_t ucommon::queue::getCount | ( | void | ) |
Get number of object points currently in the queue.
| static ObjectProtocol* ucommon::queue::lifo | ( | queue & | queue, | |
| timeout_t | timeout = 0 | |||
| ) | [inline, static] |
Convenience function get last object from the queue.
| queue | to get from. | |
| timeout | to wait if empty. |
Definition at line 314 of file containers.h.

| ObjectProtocol* ucommon::queue::lifo | ( | timeout_t | timeout = 0 |
) |
Get and remove first object posted to the queue.
This can wait for a specified timeout of the queue is empty. The object is still retained and must be released or deleted by the receiving function.
| timeout | to wait if empty in milliseconds. |
Reimplemented in ucommon::queueof< T >.
| static bool ucommon::queue::post | ( | queue & | queue, | |
| ObjectProtocol * | object, | |||
| timeout_t | timeout = 0 | |||
| ) | [inline, static] |
Convenience function to post object into the queue.
| queue | to post into. | |
| object | to post. | |
| timeout | to wait if full. |
Definition at line 296 of file containers.h.

| bool ucommon::queue::post | ( | ObjectProtocol * | object, | |
| timeout_t | timeout = 0 | |||
| ) |
Post an object into the queue by it's pointer.
This can wait for a specified timeout if the queue is full, for example, for another thread to remove an object pointer. This also retains the object.
| object | to post. | |
| timeout | to wait if queue is full in milliseconds. |
| static bool ucommon::queue::remove | ( | queue & | queue, | |
| ObjectProtocol * | object | |||
| ) | [inline, static] |
Convenience function to remove an object from the queue.
| queue | to remove object from. | |
| object | to remove. |
Definition at line 286 of file containers.h.
| bool ucommon::queue::remove | ( | ObjectProtocol * | object | ) |
Remove a specific object pointer for the queue.
This can remove a member from any location in the queue, whether beginning, end, or somewhere in the middle. This also releases the object.
| object | to remove. |
1.6.3