BloombergLP::bdlcc::BoundedQueue

This class provides a thread-safe bounded queue of values.

Synopsis

Declared in <bdlcc_boundedqueue.h>

template<class TYPE>
class BoundedQueue;

Type Aliases

NameDescription
value_type The type for elements stored in this queue.

Enums

NameDescription
Unnamed enum Status codes returned by queue operations.

Member Functions

NameDescription
BoundedQueue [constructor]Create a thread-aware queue with at least the specified capacity. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used.
~BoundedQueue [destructor]Destroy this object.
allocator Return the allocator used by this object to supply memory.
capacity Return the maximum number of elements that may be stored in this queue. Note that the value returned may be greater than that supplied at construction.
disablePopFront Disable dequeueing from this queue. All subsequent invocations of popFront or tryPopFront will fail immediately. All blocked invocations of popFront and waitUntilEmpty will fail immediately. If the queue is already dequeue disabled, this method has no effect.
disablePushBack Disable enqueueing into this queue. All subsequent invocations of pushBack or tryPushBack will fail immediately. All blocked invocations of pushBack will fail immediately. If the queue is already enqueue disabled, this method has no effect.
enablePopFront Enable dequeueing. If the queue is not dequeue disabled, this call has no effect.
enablePushBack Enable queuing. If the queue is not enqueue disabled, this call has no effect.
isEmpty Return true if this queue is empty (has no elements), or false otherwise.
isFull Return true if this queue is full (has no available capacity), or false otherwise. Note that for unbounded queues, this method always returns false.
isPopFrontDisabled Return true if this queue is dequeue disabled, and false otherwise. Note that the queue is created in the "dequeue enabled" state.
isPushBackDisabled Return true if this queue is enqueue disabled, and false otherwise. Note that the queue is created in the "enqueue enabled" state.
numElements Returns the number of elements currently in this queue. Note that numElements() == capacity() is not a valid replacement for isFull (see {Exception Safety} for details).
popFront Remove the element from the front of this queue and load that element into the specified value. If the queue is empty, block until it is not empty. Return 0 on success, and a non-zero value otherwise. Specifically, return e_SUCCESS on success, e_DISABLED if isPopFrontDisabled() and e_FAILED if an error occurs. On failure, value is not changed. Threads blocked due to the queue being empty will return e_DISABLED if disablePopFront is invoked.
pushBack pushBack overloads
removeAll Remove all items currently in this queue. Note that this operation is not atomic; if other threads are concurrently pushing items into the queue the result of numElements() after this function returns is not guaranteed to be 0.
tryPopFront Attempt to remove the element from the front of this queue without blocking, and, if successful, load the specified value with the removed element. Return 0 on success, and a non-zero value otherwise. Specifically, return e_SUCCESS on success, e_DISABLED if isPopFrontDisabled(), e_EMPTY if !isPopFrontDisabled() and the queue was empty, and e_FAILED if an error occurs. On failure, value is not changed.
tryPushBack tryPushBack overloads
waitUntilEmpty Block until all the elements in this queue are removed. Return 0 on success, and a non-zero value otherwise. Specifically, return e_SUCCESS on success, e_DISABLED if `!isEmpty() && isPopFrontDisabled()`. A blocked thread waiting for the queue to empty will return e_DISABLED if disablePopFront is invoked.
operator BloombergLP::bslmf::NestedTraitDeclaration<BoundedQueue, UsesBslmaAllocator> Declare that this type uses a bslma allocator.

Friends

NameDescription
BloombergLP::bdlcc::BoundedQueue_PushExceptionCompleteProctorThis class implements a proctor that invokes TYPE::pushExceptionComplete upon destruction unless release has been called.
BloombergLP::bdlcc::BoundedQueue_PopCompleteGuardThis class implements a guard that invokes TYPE::popComplete on a NODE upon destruction.