#include <BufferLockFree.hpp>
Public Types | |
typedef BufferBase::Options | Options |
typedef BufferInterface< T >::param_t | param_t |
typedef BufferInterface< T >::reference_t | reference_t |
typedef BufferInterface< T >::size_type | size_type |
typedef T | value_t |
Public Types inherited from RTT::base::BufferInterface< T > | |
typedef boost::call_traits< T >::param_type | param_t |
typedef boost::call_traits< T >::reference | reference_t |
typedef boost::shared_ptr< BufferInterface< T > > | shared_ptr |
typedef BufferBase::size_type | size_type |
typedef T | value_t |
Public Types inherited from RTT::base::BufferBase | |
typedef boost::shared_ptr< BufferBase > | shared_ptr |
typedef int | size_type |
Public Member Functions | |
BufferLockFree (unsigned int bufsize, const Options &options=Options()) | |
BufferLockFree (unsigned int bufsize, param_t initial_value, const Options &options=Options()) | |
size_type | capacity () const |
void | clear () |
virtual bool | data_sample (param_t sample, bool reset=true) |
virtual value_t | data_sample () const |
virtual size_type | dropped () const |
bool | empty () const |
bool | full () const |
FlowStatus | Pop (reference_t item) |
size_type | Pop (std::vector< value_t > &items) |
value_t * | PopWithoutRelease () |
bool | Push (param_t item) |
size_type | Push (const std::vector< value_t > &items) |
void | Release (value_t *item) |
size_type | size () const |
~BufferLockFree () | |
Public Member Functions inherited from RTT::base::BufferInterface< T > | |
virtual | ~BufferInterface () |
Public Member Functions inherited from RTT::base::BufferBase | |
virtual | ~BufferBase () |
Public Attributes | |
const unsigned int | MAX_THREADS |
The maximum number of threads. More... | |
Private Types | |
typedef value_t | Item |
Private Attributes | |
internal::AtomicQueue< Item * > *const | bufs |
RTT::os::AtomicInt | droppedSamples |
bool | initialized |
const bool | mcircular |
internal::TsPool< Item > *const | mpool |
A Lock-free buffer implementation to read and write data of type T in a FIFO way. No memory allocation is done during read or write. One thread may read this buffer, unless the multiple_readers flag in the base::BufferBase::Options struct is set. Any number of threads may write this buffer.
T | The value type to be stored in the Buffer. Example : BufferLockFree is a buffer which holds values of type A. |
Definition at line 70 of file BufferLockFree.hpp.
|
private |
Definition at line 86 of file BufferLockFree.hpp.
typedef BufferBase::Options RTT::base::BufferLockFree< T >::Options |
Definition at line 74 of file BufferLockFree.hpp.
typedef BufferInterface<T>::param_t RTT::base::BufferLockFree< T >::param_t |
Definition at line 76 of file BufferLockFree.hpp.
typedef BufferInterface<T>::reference_t RTT::base::BufferLockFree< T >::reference_t |
Definition at line 75 of file BufferLockFree.hpp.
typedef BufferInterface<T>::size_type RTT::base::BufferLockFree< T >::size_type |
Definition at line 77 of file BufferLockFree.hpp.
typedef T RTT::base::BufferLockFree< T >::value_t |
Definition at line 78 of file BufferLockFree.hpp.
|
inline |
Create an uninitialized lock-free buffer which can store bufsize elements.
bufsize | the capacity of the buffer. ' |
Definition at line 100 of file BufferLockFree.hpp.
|
inline |
Create a lock-free buffer which can store bufsize elements.
bufsize | the capacity of the buffer. |
initial_value | A data sample with which each preallocated data element is initialized. |
Definition at line 116 of file BufferLockFree.hpp.
|
inline |
Definition at line 128 of file BufferLockFree.hpp.
|
inlinevirtual |
Returns the maximum number of items that can be stored in the buffer.
Implements RTT::base::BufferBase.
Definition at line 160 of file BufferLockFree.hpp.
|
inlinevirtual |
Clears all contents of this buffer.
Implements RTT::base::BufferBase.
Definition at line 180 of file BufferLockFree.hpp.
|
inlinevirtual |
Initializes this buffer with a data sample, such that for dynamical allocated types T, the buffer can reserve place to hold these elements.
sample | the data sample |
reset | enforce reinitialization even if this operation clears all data. |
Implements RTT::base::BufferInterface< T >.
Definition at line 136 of file BufferLockFree.hpp.
|
inlinevirtual |
Reads back a data sample.
Implements RTT::base::BufferInterface< T >.
Definition at line 148 of file BufferLockFree.hpp.
|
inlinevirtual |
Returns the number of dropped samples, because the buffer was full
Implements RTT::base::BufferBase.
Definition at line 187 of file BufferLockFree.hpp.
|
inlinevirtual |
Check if this buffer is empty.
Implements RTT::base::BufferBase.
Definition at line 170 of file BufferLockFree.hpp.
|
inlinevirtual |
Check if this buffer is full.
Implements RTT::base::BufferBase.
Definition at line 175 of file BufferLockFree.hpp.
|
inlinevirtual |
Read the oldest value from the buffer.
item | is to be set with a value from the buffer. |
Implements RTT::base::BufferInterface< T >.
Definition at line 261 of file BufferLockFree.hpp.
|
inlinevirtual |
Read the whole buffer.
items | is to be filled with all values in the buffer, with items.begin() the oldest value. |
Implements RTT::base::BufferInterface< T >.
Definition at line 272 of file BufferLockFree.hpp.
|
inlinevirtual |
Returns a pointer to the first element in the buffer. The pointer is only garanteed to stay valid until the next pop operation.
Note the pointer needs the be released by calling Release on the buffer.
Implements RTT::base::BufferInterface< T >.
Definition at line 284 of file BufferLockFree.hpp.
|
inlinevirtual |
Write a single value to the buffer.
item | the value to write |
Implements RTT::base::BufferInterface< T >.
Definition at line 192 of file BufferLockFree.hpp.
|
inlinevirtual |
Write a sequence of values to the buffer.
items | the values to write |
Implements RTT::base::BufferInterface< T >.
Definition at line 244 of file BufferLockFree.hpp.
|
inlinevirtual |
Releases the pointer
item | pointer aquired using PopWithoutRelease() |
Implements RTT::base::BufferInterface< T >.
Definition at line 292 of file BufferLockFree.hpp.
|
inlinevirtual |
Returns the actual number of items that are stored in the buffer.
Implements RTT::base::BufferBase.
Definition at line 165 of file BufferLockFree.hpp.
|
private |
Definition at line 90 of file BufferLockFree.hpp.
|
private |
Definition at line 93 of file BufferLockFree.hpp.
|
private |
Definition at line 88 of file BufferLockFree.hpp.
const unsigned int RTT::base::BufferLockFree< T >::MAX_THREADS |
The maximum number of threads.
Definition at line 83 of file BufferLockFree.hpp.
|
private |
Definition at line 87 of file BufferLockFree.hpp.
|
private |
Definition at line 91 of file BufferLockFree.hpp.