This class provides a thread safe implementation of a queue. It uses boost::circular_buffer<T> as an internal queue data structure. Along with that it makes use of the C++ standard threading library to protect the queue and provide synchronization among multiple threads.
More...
#include <ringbuffer.hpp>
|
|
| RingBuffer () |
| | Constructor of the RingBuffer class.
|
| |
|
RingBuffer & | operator= (const RingBuffer &)=delete |
| | Copy assignment.
|
| |
| | RingBuffer (RingBuffer const &other) |
| | Copy constructor of the RingBuffer class. This enables an instance of this class to be passed around as value.
|
| |
|
int | size () const |
| |
| void | push (const T &value) |
| | Pushes a value to the queue.
|
| |
|
void | pushData (T &value, int threshold) |
| |
| bool | empty () const |
| | Checks if the queue is empty.
|
| |
| bool | tryAndPop (T &value) |
| | Tries to pop a value from the queue and copy it to the value passed in as an argument. This is a non blocking call and returns immediately with a status of retrieval.
|
| |
| std::shared_ptr< T > | tryAndPop () |
| | Tries to pop an item from the queue and returns a std::shared_ptr<T> This is a non blocking call and returns immediately with a status of retrieval.
|
| |
| void | waitAndPop (T &value) |
| | Waits and pops an item from the queue and copies it to value passed in as an argument This is a blocking call and it waits until an item is available to be popped.
|
| |
| std::shared_ptr< T > | waitAndPop () |
| | Waits and pops an item from the queue and returns a shared_ptr<T> This is a blocking call and it waits until an item is available to be popped.
|
| |
| T | waitAndPopValue () |
| | Waits and pops an item from the queue and returns a copy of the item This is a blocking call and it waits until an item is available to be popped.
|
| |
| bool | waitForAndPop (T &value, std::chrono::milliseconds waitDuration) |
| | Waits and pops an item from the queue and copies it to value passed in as an argument. This is a blocking call with a timeout functionality.
|
| |
| std::shared_ptr< T > | waitForAndPop (std::chrono::milliseconds waitDuration) |
| | Waits and pops an item from the queue and returns a std::shared_ptr<T>. This is a blocking call with a timeout functionality.
|
| |
template<typename T>
class iceflow::RingBuffer< T >
This class provides a thread safe implementation of a queue. It uses boost::circular_buffer<T> as an internal queue data structure. Along with that it makes use of the C++ standard threading library to protect the queue and provide synchronization among multiple threads.
◆ RingBuffer()
Copy constructor of the RingBuffer class. This enables an instance of this class to be passed around as value.
- Parameters
-
| other | The instance to be copied from |
◆ empty()
Checks if the queue is empty.
- Returns
- true if the queue is empty, else false
◆ push()
Pushes a value to the queue.
- Parameters
-
| value | The item to be pushed to the queue |
◆ tryAndPop() [1/2]
Tries to pop an item from the queue and returns a std::shared_ptr<T> This is a non blocking call and returns immediately with a status of retrieval.
- Returns
- nullptr if there is no item to be popped, else returns a shared_ptr pointing to the popped item.
◆ tryAndPop() [2/2]
Tries to pop a value from the queue and copy it to the value passed in as an argument. This is a non blocking call and returns immediately with a status of retrieval.
- Parameters
-
| value | An instance to which the popped item is to be copied to. |
- Returns
- true if there exists an item to be popped, else false.
◆ waitAndPop() [1/2]
Waits and pops an item from the queue and returns a shared_ptr<T> This is a blocking call and it waits until an item is available to be popped.
- Returns
- returns a std::shared_ptr<T> pointing to an instance of the popped item
◆ waitAndPop() [2/2]
Waits and pops an item from the queue and copies it to value passed in as an argument This is a blocking call and it waits until an item is available to be popped.
- Parameters
-
| value | An instance to which the popped item is to be copied to. |
◆ waitAndPopValue()
Waits and pops an item from the queue and returns a copy of the item This is a blocking call and it waits until an item is available to be popped.
- Returns
- returns a copy of the instance of the popped item.
◆ waitForAndPop() [1/2]
template<typename T >
| std::shared_ptr< T > iceflow::RingBuffer< T >::waitForAndPop |
( |
std::chrono::milliseconds | waitDuration | ) |
|
|
inline |
Waits and pops an item from the queue and returns a std::shared_ptr<T>. This is a blocking call with a timeout functionality.
- Parameters
-
| waitDuration | Wait for at most waitDuration |
- Returns
- returns nullptr if it timed out, else returns a std::shared_ptr<T> pointing to an instance of item popped.
◆ waitForAndPop() [2/2]
template<typename T >
| bool iceflow::RingBuffer< T >::waitForAndPop |
( |
T & | value, |
|
|
std::chrono::milliseconds | waitDuration ) |
|
inline |
Waits and pops an item from the queue and copies it to value passed in as an argument. This is a blocking call with a timeout functionality.
- Parameters
-
| value | An instance to which the popped item is to be copied to. |
| waitDuration | Wait for at most waitDuration. |
- Returns
- returns false if the wait timedout, returns true if an item was popped and copied.
The documentation for this class was generated from the following file: