RTT::base::BufferLockFree< T > Class Template Reference
[Data Storage and Buffering classes.]

#include <BufferLockFree.hpp>

Inheritance diagram for RTT::base::BufferLockFree< T >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef BufferInterface< T >
::param_t 
param_t
typedef BufferInterface< T >
::param_t 
param_t
typedef BufferInterface< T >
::reference_t 
reference_t
typedef BufferInterface< T >
::reference_t 
reference_t
typedef BufferInterface< T >
::size_type 
size_type
typedef BufferInterface< T >
::size_type 
size_type
typedef T value_t
typedef T value_t

Public Member Functions

 BufferLockFree (unsigned int bufsize, const T &initial_value=T())
 BufferLockFree (unsigned int bufsize, const T &initial_value=T())
size_type capacity () const
size_type capacity () const
void clear ()
void clear ()
virtual void data_sample (const T &sample)
virtual void data_sample (const T &sample)
bool empty () const
bool empty () const
bool full () const
bool full () const
size_type Pop (std::vector< T > &items)
bool Pop (reference_t item)
size_type Pop (std::vector< T > &items)
bool Pop (reference_t item)
value_tPopWithoutRelease ()
value_tPopWithoutRelease ()
size_type Push (const std::vector< T > &items)
bool Push (param_t item)
size_type Push (const std::vector< T > &items)
bool Push (param_t item)
void Release (value_t *item)
void Release (value_t *item)
size_type size () const
size_type size () const
 ~BufferLockFree ()
 ~BufferLockFree ()

Private Types

typedef T Item
typedef T Item

Private Attributes

internal::AtomicMWSRQueue< Item * > bufs
internal::TsPool< Itemmpool

Detailed Description

template<class T>
class RTT::base::BufferLockFree< T >

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 and any number of threads may write this buffer.

Parameters:
T The value type to be stored in the Buffer. Example : BufferLockFree is a buffer which holds values of type A.

Definition at line 68 of file install/include/rtt/base/BufferLockFree.hpp.


Member Typedef Documentation

template<class T >
typedef T RTT::base::BufferLockFree< T >::Item [private]

Definition at line 77 of file rtt/base/BufferLockFree.hpp.

template<class T >
typedef T RTT::base::BufferLockFree< T >::Item [private]

Definition at line 77 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
typedef BufferInterface<T>::param_t RTT::base::BufferLockFree< T >::param_t

Reimplemented from RTT::base::BufferInterface< T >.

Reimplemented in RTT::base::Buffer< T >, and RTT::base::Buffer< T >.

Definition at line 73 of file rtt/base/BufferLockFree.hpp.

template<class T >
typedef BufferInterface<T>::param_t RTT::base::BufferLockFree< T >::param_t
template<class T >
typedef BufferInterface<T>::reference_t RTT::base::BufferLockFree< T >::reference_t

Reimplemented from RTT::base::BufferInterface< T >.

Reimplemented in RTT::base::Buffer< T >, and RTT::base::Buffer< T >.

Definition at line 72 of file rtt/base/BufferLockFree.hpp.

template<class T >
typedef BufferInterface<T>::reference_t RTT::base::BufferLockFree< T >::reference_t
template<class T >
typedef BufferInterface<T>::size_type RTT::base::BufferLockFree< T >::size_type

Reimplemented from RTT::base::BufferInterface< T >.

Reimplemented in RTT::base::Buffer< T >, and RTT::base::Buffer< T >.

Definition at line 74 of file rtt/base/BufferLockFree.hpp.

template<class T >
typedef BufferInterface<T>::size_type RTT::base::BufferLockFree< T >::size_type
template<class T >
typedef T RTT::base::BufferLockFree< T >::value_t

Reimplemented from RTT::base::BufferInterface< T >.

Reimplemented in RTT::base::Buffer< T >, and RTT::base::Buffer< T >.

Definition at line 75 of file rtt/base/BufferLockFree.hpp.

template<class T >
typedef T RTT::base::BufferLockFree< T >::value_t

Constructor & Destructor Documentation

template<class T >
RTT::base::BufferLockFree< T >::BufferLockFree ( unsigned int  bufsize,
const T &  initial_value = T() 
) [inline]

Create a lock-free buffer wich can store bufsize elements.

Parameters:
bufsize the capacity of the buffer. '

Definition at line 86 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
RTT::base::BufferLockFree< T >::~BufferLockFree (  )  [inline]

Definition at line 92 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
RTT::base::BufferLockFree< T >::BufferLockFree ( unsigned int  bufsize,
const T &  initial_value = T() 
) [inline]

Create a lock-free buffer wich can store bufsize elements.

Parameters:
bufsize the capacity of the buffer. '

Definition at line 86 of file rtt/base/BufferLockFree.hpp.

template<class T >
RTT::base::BufferLockFree< T >::~BufferLockFree (  )  [inline]

Definition at line 92 of file rtt/base/BufferLockFree.hpp.


Member Function Documentation

template<class T >
size_type RTT::base::BufferLockFree< T >::capacity (  )  const [inline, virtual]

Returns the maximum number of items that can be stored in the buffer.

Returns:
maximum number of items.

Implements RTT::base::BufferBase.

Definition at line 103 of file rtt/base/BufferLockFree.hpp.

template<class T >
size_type RTT::base::BufferLockFree< T >::capacity (  )  const [inline, virtual]

Returns the maximum number of items that can be stored in the buffer.

Returns:
maximum number of items.

Implements RTT::base::BufferBase.

Definition at line 103 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
void RTT::base::BufferLockFree< T >::clear (  )  [inline, virtual]

Clears all contents of this buffer.

Implements RTT::base::BufferBase.

Definition at line 123 of file rtt/base/BufferLockFree.hpp.

template<class T >
void RTT::base::BufferLockFree< T >::clear (  )  [inline, virtual]

Clears all contents of this buffer.

Implements RTT::base::BufferBase.

Definition at line 123 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
virtual void RTT::base::BufferLockFree< T >::data_sample ( const T &  sample  )  [inline, virtual]

Initializes this buffer with a data sample, such that for dynamical allocated types T, the buffer can reserve place to hold these elements.

Postcondition:
Calling this function causes all data in the buffer to be lost and the size being reset to zero.

Implements RTT::base::BufferInterface< T >.

Definition at line 97 of file rtt/base/BufferLockFree.hpp.

template<class T >
virtual void RTT::base::BufferLockFree< T >::data_sample ( const T &  sample  )  [inline, virtual]

Initializes this buffer with a data sample, such that for dynamical allocated types T, the buffer can reserve place to hold these elements.

Postcondition:
Calling this function causes all data in the buffer to be lost and the size being reset to zero.

Implements RTT::base::BufferInterface< T >.

Definition at line 97 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
bool RTT::base::BufferLockFree< T >::empty (  )  const [inline, virtual]

Check if this buffer is empty.

Returns:
true if size() == 0

Implements RTT::base::BufferBase.

Definition at line 113 of file rtt/base/BufferLockFree.hpp.

template<class T >
bool RTT::base::BufferLockFree< T >::empty (  )  const [inline, virtual]

Check if this buffer is empty.

Returns:
true if size() == 0

Implements RTT::base::BufferBase.

Definition at line 113 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
bool RTT::base::BufferLockFree< T >::full (  )  const [inline, virtual]

Check if this buffer is full.

Returns:
true if size() == capacity()

Implements RTT::base::BufferBase.

Definition at line 118 of file rtt/base/BufferLockFree.hpp.

template<class T >
bool RTT::base::BufferLockFree< T >::full (  )  const [inline, virtual]

Check if this buffer is full.

Returns:
true if size() == capacity()

Implements RTT::base::BufferBase.

Definition at line 118 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
size_type RTT::base::BufferLockFree< T >::Pop ( std::vector< T > &  items  )  [inline, virtual]

Read the whole buffer.

Parameters:
items is to be filled with all values in the buffer, with items.begin() the oldest value.
Returns:
the number of items read.

Implements RTT::base::BufferInterface< T >.

Definition at line 169 of file rtt/base/BufferLockFree.hpp.

template<class T >
bool RTT::base::BufferLockFree< T >::Pop ( reference_t  item  )  [inline, virtual]

Read the oldest value from the buffer.

Parameters:
item is to be set with a value from the buffer.
Returns:
true if something was read.

Implements RTT::base::BufferInterface< T >.

Definition at line 158 of file rtt/base/BufferLockFree.hpp.

template<class T >
size_type RTT::base::BufferLockFree< T >::Pop ( std::vector< T > &  items  )  [inline, virtual]

Read the whole buffer.

Parameters:
items is to be filled with all values in the buffer, with items.begin() the oldest value.
Returns:
the number of items read.

Implements RTT::base::BufferInterface< T >.

Definition at line 169 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
bool RTT::base::BufferLockFree< T >::Pop ( reference_t  item  )  [inline, virtual]

Read the oldest value from the buffer.

Parameters:
item is to be set with a value from the buffer.
Returns:
true if something was read.

Implements RTT::base::BufferInterface< T >.

Definition at line 158 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
value_t* RTT::base::BufferLockFree< T >::PopWithoutRelease (  )  [inline, virtual]

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.

Returns:
a pointer to a sample or Zero if buffer is empty

Implements RTT::base::BufferInterface< T >.

Definition at line 181 of file rtt/base/BufferLockFree.hpp.

template<class T >
value_t* RTT::base::BufferLockFree< T >::PopWithoutRelease (  )  [inline, virtual]

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.

Returns:
a pointer to a sample or Zero if buffer is empty

Implements RTT::base::BufferInterface< T >.

Definition at line 181 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
size_type RTT::base::BufferLockFree< T >::Push ( const std::vector< T > &  items  )  [inline, virtual]

Write a sequence of values to the buffer.

Parameters:
items the values to write
Returns:
the number of values written (may be less than items.size())

Implements RTT::base::BufferInterface< T >.

Definition at line 147 of file rtt/base/BufferLockFree.hpp.

template<class T >
bool RTT::base::BufferLockFree< T >::Push ( param_t  item  )  [inline, virtual]

Write a single value to the buffer.

Parameters:
item the value to write
Returns:
false if the buffer is full.

Implements RTT::base::BufferInterface< T >.

Definition at line 130 of file rtt/base/BufferLockFree.hpp.

template<class T >
size_type RTT::base::BufferLockFree< T >::Push ( const std::vector< T > &  items  )  [inline, virtual]

Write a sequence of values to the buffer.

Parameters:
items the values to write
Returns:
the number of values written (may be less than items.size())

Implements RTT::base::BufferInterface< T >.

Definition at line 147 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
bool RTT::base::BufferLockFree< T >::Push ( param_t  item  )  [inline, virtual]

Write a single value to the buffer.

Parameters:
item the value to write
Returns:
false if the buffer is full.

Implements RTT::base::BufferInterface< T >.

Definition at line 130 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
void RTT::base::BufferLockFree< T >::Release ( value_t item  )  [inline, virtual]

Releases the pointer

Parameters:
item pointer aquired using PopWithoutRelease()

Implements RTT::base::BufferInterface< T >.

Definition at line 189 of file rtt/base/BufferLockFree.hpp.

template<class T >
void RTT::base::BufferLockFree< T >::Release ( value_t item  )  [inline, virtual]

Releases the pointer

Parameters:
item pointer aquired using PopWithoutRelease()

Implements RTT::base::BufferInterface< T >.

Definition at line 189 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
size_type RTT::base::BufferLockFree< T >::size (  )  const [inline, virtual]

Returns the actual number of items that are stored in the buffer.

Returns:
number of items.

Implements RTT::base::BufferBase.

Definition at line 108 of file rtt/base/BufferLockFree.hpp.

template<class T >
size_type RTT::base::BufferLockFree< T >::size (  )  const [inline, virtual]

Returns the actual number of items that are stored in the buffer.

Returns:
number of items.

Implements RTT::base::BufferBase.

Definition at line 108 of file install/include/rtt/base/BufferLockFree.hpp.


Member Data Documentation

template<class T >
internal::AtomicMWSRQueue< Item * > RTT::base::BufferLockFree< T >::bufs [private]

Definition at line 78 of file install/include/rtt/base/BufferLockFree.hpp.

template<class T >
internal::TsPool< Item > RTT::base::BufferLockFree< T >::mpool [mutable, private]

Definition at line 80 of file install/include/rtt/base/BufferLockFree.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


rtt
Author(s): RTT Developers
autogenerated on Fri Jan 11 09:49:50 2013