#include <observed_queue.h>
Public Member Functions | |
void | clear () override |
bool | dequeue (T &data, const std::chrono::microseconds &duration) override |
bool | empty () const override |
bool | enqueue (T &&value) override |
bool | enqueue (T &value) override |
ObservedBlockingQueue (const size_t &max_queue_size) | |
size_t | size () const override |
bool | tryEnqueue (T &value, const std::chrono::microseconds &duration) override |
bool | tryEnqueue (T &&value, const std::chrono::microseconds &duration) override |
~ObservedBlockingQueue () override=default | |
Public Member Functions inherited from Aws::DataFlow::ObservedQueue< T, Allocator > | |
void | setStatusMonitor (std::shared_ptr< StatusMonitor > status_monitor) override |
~ObservedQueue () override=default | |
Public Member Functions inherited from Aws::DataFlow::Source< T > | |
virtual | ~Source ()=default |
Private Types | |
using | OQ = ObservedQueue< T, Allocator > |
using | WaitFunc = std::function< std::cv_status(std::unique_lock< std::mutex > &)> |
Private Member Functions | |
bool | enqueueOnCondition (T &value, const WaitFunc &wait_func) |
Static Private Member Functions | |
static std::cv_status | wait (std::condition_variable &condition_variable, std::unique_lock< std::mutex > &lock) |
Private Attributes | |
std::condition_variable | condition_variable_ |
std::mutex | dequeue_mutex_ |
size_t | max_queue_size_ |
Additional Inherited Members | |
Protected Member Functions inherited from Aws::DataFlow::ObservedQueue< T, Allocator > | |
void | notifyMonitor (const Status &status) |
Protected Attributes inherited from Aws::DataFlow::ObservedQueue< T, Allocator > | |
std::deque< T, Allocator > | dequeue_ |
std::shared_ptr< StatusMonitor > | status_monitor_ |
An observed queue is a dequeue wrapper which notifies an observer when a task is added.
T | type of data |
Allocator |
Definition at line 283 of file observed_queue.h.
|
private |
Definition at line 394 of file observed_queue.h.
|
private |
Definition at line 395 of file observed_queue.h.
|
inlineexplicit |
Create an observed blocking queue.
max_queue_size | to configure. |
std::invalid_argument | max_queue_size is 0 |
Definition at line 292 of file observed_queue.h.
|
overridedefault |
|
inlineoverridevirtual |
Clear the dequeue
Reimplemented from Aws::DataFlow::ObservedQueue< T, Allocator >.
Definition at line 388 of file observed_queue.h.
|
inlineoverridevirtual |
Dequeue data and notify the observer of data unavailable if the queue is empty.
Reimplemented from Aws::DataFlow::ObservedQueue< T, Allocator >.
Definition at line 360 of file observed_queue.h.
|
inlineoverridevirtual |
Reimplemented from Aws::DataFlow::ObservedQueue< T, Allocator >.
Definition at line 372 of file observed_queue.h.
|
inlineoverridevirtual |
Enqueue data and notify the observer of data available.
value | to enqueue |
Reimplemented from Aws::DataFlow::ObservedQueue< T, Allocator >.
Definition at line 305 of file observed_queue.h.
|
inlineoverridevirtual |
Enqueue data and notify the observer of data available.
value | to enqueue |
Reimplemented from Aws::DataFlow::ObservedQueue< T, Allocator >.
Definition at line 316 of file observed_queue.h.
|
inlineprivate |
Enqueue on the condition variable.
value | to enqueue |
wait_func | to wait for availability |
Definition at line 419 of file observed_queue.h.
|
inlineoverridevirtual |
Reimplemented from Aws::DataFlow::ObservedQueue< T, Allocator >.
Definition at line 380 of file observed_queue.h.
|
inlineoverridevirtual |
Blocking call.
value | |
duration |
Reimplemented from Aws::DataFlow::ObservedQueue< T, Allocator >.
Definition at line 333 of file observed_queue.h.
|
inlineoverridevirtual |
Reimplemented from Aws::DataFlow::ObservedQueue< T, Allocator >.
Definition at line 344 of file observed_queue.h.
|
inlinestaticprivate |
Static wait function which returns no_timeout on completion.
condition_variable | |
lock |
Definition at line 404 of file observed_queue.h.
|
private |
Definition at line 434 of file observed_queue.h.
|
mutableprivate |
Definition at line 435 of file observed_queue.h.
|
private |
Definition at line 433 of file observed_queue.h.