Bounded FIFO log record queueing strategy. More...
#include <bounded_fifo_queue.hpp>
Protected Member Functions | |
bounded_fifo_queue () | |
Default constructor. More... | |
template<typename ArgsT > | |
bounded_fifo_queue (ArgsT const &) | |
Initializing constructor. More... | |
void | enqueue (record_view const &rec) |
Enqueues log record to the queue. More... | |
bool | try_enqueue (record_view const &rec) |
Attempts to enqueue log record to the queue. More... | |
bool | try_dequeue_ready (record_view &rec) |
Attempts to dequeue a log record ready for processing from the queue, does not block if the queue is empty. More... | |
bool | try_dequeue (record_view &rec) |
Attempts to dequeue log record from the queue, does not block if the queue is empty. More... | |
bool | dequeue_ready (record_view &rec) |
Dequeues log record from the queue, blocks if the queue is empty. More... | |
void | interrupt_dequeue () |
Wakes a thread possibly blocked in the dequeue method. More... | |
Bounded FIFO log record queueing strategy.
The bounded_fifo_queue
class is intended to be used with the asynchronous_sink
frontend as a log record queueing strategy.
This strategy describes log record queueing logic. The queue has a limited capacity, upon reaching which the enqueue operation will invoke the overflow handling strategy specified in the OverflowStrategyT
template parameter to handle the situation. The library provides overflow handling strategies for most common cases: drop_on_overflow
will silently discard the log record, and block_on_overflow
will put the enqueueing thread to wait until there is space in the queue.
The log record queue imposes no ordering over the queued elements aside from the order in which they are enqueued.
|
inlineprotected |
Default constructor.
|
inlineexplicitprotected |
Initializing constructor.
|
inlineprotected |
Dequeues log record from the queue, blocks if the queue is empty.
References boost::lock(), boost::size(), boost::record_view::swap(), and boost::condition_variable::wait().
|
inlineprotected |
Enqueues log record to the queue.
References boost::lock(), boost::condition_variable::notify_one(), and boost::size().
|
inlineprotected |
Wakes a thread possibly blocked in the dequeue
method.
References boost::lock(), and boost::condition_variable::notify_one().
|
inlineprotected |
Attempts to dequeue log record from the queue, does not block if the queue is empty.
References boost::lock(), boost::size(), and boost::record_view::swap().
Referenced by boost::sinks::bounded_fifo_queue< MaxQueueSizeV, OverflowStrategyT >::try_dequeue_ready().
|
inlineprotected |
Attempts to dequeue a log record ready for processing from the queue, does not block if the queue is empty.
References boost::sinks::bounded_fifo_queue< MaxQueueSizeV, OverflowStrategyT >::try_dequeue().
|
inlineprotected |
Attempts to enqueue log record to the queue.
References boost::lock(), boost::condition_variable::notify_one(), boost::unique_lock< Mutex >::owns_lock(), boost::size(), and boost::try_to_lock.