Orocos Real-Time Toolkit
2.5.0
|
This object represents the default thread-safe data object implementation used by Orocos objects. More...
#include <rtt/base/DataObject.hpp>
Public Types | |
typedef T | DataType |
The type of the data. | |
typedef T | value_t |
typedef boost::shared_ptr < DataObjectInterface< T > > | shared_ptr |
Used for shared_ptr management. | |
Public Member Functions | |
DataObject (const T &initial_value=T()) | |
Create a data object for holding a user defined struct. | |
virtual DataType | Get () const |
Get a copy of the data. | |
virtual void | Get (DataType &pull) const |
Get a copy of the Data (non allocating). | |
virtual void | Set (const DataType &push) |
Set the data to a certain value (non blocking). | |
virtual void | data_sample (const DataType &sample) |
Provides a data sample to initialize this data object. | |
Public Attributes | |
const unsigned int | MAX_THREADS |
The maximum number of threads. |
This object represents the default thread-safe data object implementation used by Orocos objects.
Definition at line 65 of file DataObject.hpp.
virtual void RTT::base::DataObjectLockFree< T >::data_sample | ( | const DataType & | sample | ) | [inline, virtual, inherited] |
Provides a data sample to initialize this data object.
As such enough storage space can be allocated before the actual writing begins.
sample |
Implements RTT::base::DataObjectInterface< T >.
Definition at line 218 of file DataObjectLockFree.hpp.
Referenced by RTT::base::DataObjectLockFree< T >::DataObjectLockFree().
virtual DataType RTT::base::DataObjectLockFree< T >::Get | ( | ) | const [inline, virtual, inherited] |
Get a copy of the data.
This method will allocate memory twice if data is not a value type. Use Get(DataType&) for the non-allocating version.
Implements RTT::base::DataObjectInterface< T >.
Definition at line 155 of file DataObjectLockFree.hpp.
References RTT::base::DataObjectLockFree< T >::Get().
Referenced by RTT::base::DataObjectLockFree< T >::Get().
virtual void RTT::base::DataObjectLockFree< T >::Get | ( | DataType & | pull | ) | const [inline, virtual, inherited] |
Get a copy of the Data (non allocating).
If pull has reserved enough memory to store the copy, no memory will be allocated.
pull | A copy of the data. |
Implements RTT::base::DataObjectInterface< T >.
Definition at line 164 of file DataObjectLockFree.hpp.
References oro_atomic_dec(), and oro_atomic_inc().
virtual void RTT::base::DataObjectLockFree< T >::Set | ( | const DataType & | push | ) | [inline, virtual, inherited] |
Set the data to a certain value (non blocking).
push | The data which must be set. |
This method can not be called concurrently (only one producer). With a minimum of 3 buffers, if the write_ptr+1 field is not occupied, it will remain so because the read_ptr is at write_ptr-1 (and can not increment the counter on write_ptr+1). Hence, no locking is needed.
Implements RTT::base::DataObjectInterface< T >.
Definition at line 191 of file DataObjectLockFree.hpp.
References oro_atomic_read().
const unsigned int RTT::base::DataObjectLockFree< T >::MAX_THREADS [inherited] |
The maximum number of threads.
When used in data flow, this is always 2.
Definition at line 91 of file DataObjectLockFree.hpp.