Classes | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
RTC::RingBuffer< DataType > Class Template Reference

Ring buffer implementation class. More...

#include <RingBuffer.h>

Inheritance diagram for RTC::RingBuffer< DataType >:
Inheritance graph
[legend]

Classes

struct  condition
 struct for condition variable More...
 

Public Member Functions

virtual ReturnCode advanceRptr (long int n=1)
 Get the buffer length. More...
 
virtual ReturnCode advanceWptr (long int n=1)
 Get the buffer length. More...
 
virtual bool empty (void) const
 Check on whether the buffer is empty. More...
 
virtual bool full (void) const
 Check on whether the buffer is full. More...
 
virtual ReturnCode get (DataType &value)
 Write data into the buffer. More...
 
virtual DataType & get ()
 Reading data from the buffer. More...
 
virtual void init (const coil::Properties &prop)
 Set the buffer. More...
 
virtual size_t length (void) const
 Get the buffer length. More...
 
virtual ReturnCode length (size_t n)
 Get the buffer length. More...
 
virtual ReturnCode put (const DataType &value)
 Write data into the buffer. More...
 
virtual ReturnCode read (DataType &value, long int sec=-1, long int nsec=0)
 Readout data from the buffer. More...
 
virtual size_t readable () const
 Write data into the buffer. More...
 
virtual ReturnCode reset ()
 Get the buffer length. More...
 
 RingBuffer (long int length=RINGBUFFER_DEFAULT_LENGTH)
 Constructor. More...
 
virtual DataType * rptr (long int n=0)
 Get the buffer length. More...
 
virtual DataType * wptr (long int n=0)
 Get the buffer length. More...
 
virtual size_t writable () const
 Write data into the buffer. More...
 
virtual ReturnCode write (const DataType &value, long int sec=-1, long int nsec=0)
 Write data into the buffer. More...
 
virtual ~RingBuffer (void)
 Virtual destractor. More...
 
- Public Member Functions inherited from RTC::BufferBase< DataType >
virtual BUFFERSTATUS_ENUM ~BufferBase (void)
 Virtual destructor. More...
 

Public Attributes

BUFFERSTATUS_ENUM typedef coil::Guard< coil::MutexGuard
 

Private Member Functions

void initLength (const coil::Properties &prop)
 
void initReadPolicy (const coil::Properties &prop)
 
void initWritePolicy (const coil::Properties &prop)
 

Private Attributes

std::vector< DataType > m_buffer
 baffer array More...
 
condition m_empty
 empty condition variable More...
 
size_t m_fillcount
 Fill count. More...
 
condition m_full
 full condition variable More...
 
size_t m_length
 Buffer length. More...
 
bool m_overwrite
 Overwrite flag. More...
 
coil::Mutex m_posmutex
 mutex for position variable More...
 
bool m_readback
 Readback flag. More...
 
size_t m_rpos
 poitner to read More...
 
coil::TimeValue m_rtimeout
 Timeout time of reading. More...
 
bool m_timedread
 Timedread flag. More...
 
bool m_timedwrite
 Timedwrite flag. More...
 
size_t m_wcount
 Counter for writing. More...
 
size_t m_wpos
 pointer to write More...
 
coil::TimeValue m_wtimeout
 Timeout time for writing. More...
 

Additional Inherited Members

- Public Types inherited from RTC::BufferStatus
enum  Enum {
  BUFFER_OK = 0, BUFFER_ERROR, BUFFER_FULL, BUFFER_EMPTY,
  NOT_SUPPORTED, TIMEOUT, PRECONDITION_NOT_MET
}
 DataPortStatus return codes. More...
 
- Static Public Member Functions inherited from RTC::BufferStatus
static const char * toString (Enum status)
 Convert BufferStatus into the string. More...
 

Detailed Description

template<class DataType>
class RTC::RingBuffer< DataType >

Ring buffer implementation class.

This is the buffer implementation class with ring shaped buffer of specified length. If data is stored in the entire buffer, data from now on will be overwritten from old data one by one. Therefore, only the length of latest data is stored in the buffer.

Note: In the current implementation, only last stored data can be read from the buffer.

Parameters
DataTypeData type to store in the buffer
Since
0.4.0

Definition at line 89 of file RingBuffer.h.

Constructor & Destructor Documentation

◆ RingBuffer()

template<class DataType>
RTC::RingBuffer< DataType >::RingBuffer ( long int  length = RINGBUFFER_DEFAULT_LENGTH)
inline

Constructor.

Constructor. Initialize the buffer by specified buffer length. However, if the specified length is less than two, the buffer should be initialized by two in length.

Parameters
lengthBuffer length

Definition at line 118 of file RingBuffer.h.

◆ ~RingBuffer()

template<class DataType>
virtual RTC::RingBuffer< DataType >::~RingBuffer ( void  )
inlinevirtual

Virtual destractor.

Virtual destractor

Definition at line 144 of file RingBuffer.h.

Member Function Documentation

◆ advanceRptr()

template<class DataType>
virtual ReturnCode RTC::RingBuffer< DataType >::advanceRptr ( long int  n = 1)
inlinevirtual

Get the buffer length.

Pure virtual function to get the buffer length.

Returns
buffer length

Implements RTC::BufferBase< DataType >.

Definition at line 594 of file RingBuffer.h.

◆ advanceWptr()

template<class DataType>
virtual ReturnCode RTC::RingBuffer< DataType >::advanceWptr ( long int  n = 1)
inlinevirtual

Get the buffer length.

Pure virtual function to get the buffer length.

Returns
buffer length

Implements RTC::BufferBase< DataType >.

Definition at line 334 of file RingBuffer.h.

◆ empty()

template<class DataType>
virtual bool RTC::RingBuffer< DataType >::empty ( void  ) const
inlinevirtual

Check on whether the buffer is empty.

Pure virtual function to check on whether the buffer is empty.

Returns
True if the buffer is empty, else false.

Implements RTC::BufferBase< DataType >.

Definition at line 829 of file RingBuffer.h.

◆ full()

template<class DataType>
virtual bool RTC::RingBuffer< DataType >::full ( void  ) const
inlinevirtual

Check on whether the buffer is full.

Pure virtual function to check on whether the buffer is full.

Returns
True if the buffer is full, else false.

Implements RTC::BufferBase< DataType >.

Definition at line 540 of file RingBuffer.h.

◆ get() [1/2]

template<class DataType>
virtual ReturnCode RTC::RingBuffer< DataType >::get ( DataType &  value)
inlinevirtual

Write data into the buffer.

Pure virtual function to write data into the buffer.

Parameters
valueTarget data to write.
Returns
Result of having written in data (true:Successful, false:Failed)

Implements RTC::BufferBase< DataType >.

Definition at line 638 of file RingBuffer.h.

◆ get() [2/2]

template<class DataType>
virtual DataType& RTC::RingBuffer< DataType >::get ( void  )
inlinevirtual

Reading data from the buffer.

Returns
Read data

Implements RTC::BufferBase< DataType >.

Definition at line 663 of file RingBuffer.h.

◆ init()

template<class DataType>
virtual void RTC::RingBuffer< DataType >::init ( const coil::Properties prop)
inlinevirtual

Set the buffer.

Implements RTC::BufferBase< DataType >.

Definition at line 187 of file RingBuffer.h.

◆ initLength()

template<class DataType>
void RTC::RingBuffer< DataType >::initLength ( const coil::Properties prop)
inlineprivate

Definition at line 836 of file RingBuffer.h.

◆ initReadPolicy()

template<class DataType>
void RTC::RingBuffer< DataType >::initReadPolicy ( const coil::Properties prop)
inlineprivate

Definition at line 881 of file RingBuffer.h.

◆ initWritePolicy()

template<class DataType>
void RTC::RingBuffer< DataType >::initWritePolicy ( const coil::Properties prop)
inlineprivate

Definition at line 851 of file RingBuffer.h.

◆ length() [1/2]

template<class DataType>
virtual size_t RTC::RingBuffer< DataType >::length ( void  ) const
inlinevirtual

Get the buffer length.

Get the buffer length.

Returns
Buffer length

Implements RTC::BufferBase< DataType >.

Definition at line 214 of file RingBuffer.h.

◆ length() [2/2]

template<class DataType>
virtual ReturnCode RTC::RingBuffer< DataType >::length ( size_t  n)
inlinevirtual

Get the buffer length.

Pure virtual function to get the buffer length.

Returns
buffer length

Implements RTC::BufferBase< DataType >.

Definition at line 242 of file RingBuffer.h.

◆ put()

template<class DataType>
virtual ReturnCode RTC::RingBuffer< DataType >::put ( const DataType &  value)
inlinevirtual

Write data into the buffer.

Pure virtual function to write data into the buffer. Always BUFFER_OK will be returned in this implementation.

Parameters
valueTarget data to write.
Returns
BUFFER_OK: Successful BUFFER_ERROR: Failed

Implements RTC::BufferBase< DataType >.

Definition at line 382 of file RingBuffer.h.

◆ read()

template<class DataType>
virtual ReturnCode RTC::RingBuffer< DataType >::read ( DataType &  value,
long int  sec = -1,
long int  nsec = 0 
)
inlinevirtual

Readout data from the buffer.

Readout data stored into the buffer.

Parameters
valueReadout data
Returns
Readout result (Always true: readout success is returned)

Implements RTC::BufferBase< DataType >.

Definition at line 711 of file RingBuffer.h.

◆ readable()

template<class DataType>
virtual size_t RTC::RingBuffer< DataType >::readable ( ) const
inlinevirtual

Write data into the buffer.

Pure virtual function to write data into the buffer.

Parameters
valueTarget data to write.
Returns
Result of having written in data (true:Successful, false:Failed)

Implements RTC::BufferBase< DataType >.

Definition at line 804 of file RingBuffer.h.

◆ reset()

template<class DataType>
virtual ReturnCode RTC::RingBuffer< DataType >::reset ( )
inlinevirtual

Get the buffer length.

Pure virtual function to get the buffer length.

Returns
buffer length

Implements RTC::BufferBase< DataType >.

Definition at line 272 of file RingBuffer.h.

◆ rptr()

template<class DataType>
virtual DataType* RTC::RingBuffer< DataType >::rptr ( long int  n = 0)
inlinevirtual

Get the buffer length.

Pure virtual function to get the buffer length.

Returns
buffer length

Implements RTC::BufferBase< DataType >.

Definition at line 567 of file RingBuffer.h.

◆ wptr()

template<class DataType>
virtual DataType* RTC::RingBuffer< DataType >::wptr ( long int  n = 0)
inlinevirtual

Get the buffer length.

Pure virtual function to get the buffer length.

Returns
buffer length

Implements RTC::BufferBase< DataType >.

Definition at line 305 of file RingBuffer.h.

◆ writable()

template<class DataType>
virtual size_t RTC::RingBuffer< DataType >::writable ( ) const
inlinevirtual

Write data into the buffer.

Pure virtual function to write data into the buffer.

Parameters
valueTarget data to write.
Returns
Result of having written in data (true:Successful, false:Failed)

Implements RTC::BufferBase< DataType >.

Definition at line 515 of file RingBuffer.h.

◆ write()

template<class DataType>
virtual ReturnCode RTC::RingBuffer< DataType >::write ( const DataType &  value,
long int  sec = -1,
long int  nsec = 0 
)
inlinevirtual

Write data into the buffer.

Write data which is given argument into the buffer.

Parameters
valueTarget data for writing
Returns
Writing result (Always true: writing success is returned)

Implements RTC::BufferBase< DataType >.

Definition at line 430 of file RingBuffer.h.

Member Data Documentation

◆ Guard

template<class DataType>
BUFFERSTATUS_ENUM typedef coil::Guard<coil::Mutex> RTC::RingBuffer< DataType >::Guard

Definition at line 94 of file RingBuffer.h.

◆ m_buffer

template<class DataType>
std::vector<DataType> RTC::RingBuffer< DataType >::m_buffer
private

baffer array

Definition at line 1012 of file RingBuffer.h.

◆ m_empty

template<class DataType>
condition RTC::RingBuffer< DataType >::m_empty
private

empty condition variable

Definition at line 1044 of file RingBuffer.h.

◆ m_fillcount

template<class DataType>
size_t RTC::RingBuffer< DataType >::m_fillcount
private

Fill count.

Definition at line 994 of file RingBuffer.h.

◆ m_full

template<class DataType>
condition RTC::RingBuffer< DataType >::m_full
private

full condition variable

Definition at line 1053 of file RingBuffer.h.

◆ m_length

template<class DataType>
size_t RTC::RingBuffer< DataType >::m_length
private

Buffer length.

Definition at line 967 of file RingBuffer.h.

◆ m_overwrite

template<class DataType>
bool RTC::RingBuffer< DataType >::m_overwrite
private

Overwrite flag.

Definition at line 914 of file RingBuffer.h.

◆ m_posmutex

template<class DataType>
coil::Mutex RTC::RingBuffer< DataType >::m_posmutex
mutableprivate

mutex for position variable

Definition at line 1035 of file RingBuffer.h.

◆ m_readback

template<class DataType>
bool RTC::RingBuffer< DataType >::m_readback
private

Readback flag.

Definition at line 923 of file RingBuffer.h.

◆ m_rpos

template<class DataType>
size_t RTC::RingBuffer< DataType >::m_rpos
private

poitner to read

Definition at line 985 of file RingBuffer.h.

◆ m_rtimeout

template<class DataType>
coil::TimeValue RTC::RingBuffer< DataType >::m_rtimeout
private

Timeout time of reading.

Definition at line 958 of file RingBuffer.h.

◆ m_timedread

template<class DataType>
bool RTC::RingBuffer< DataType >::m_timedread
private

Timedread flag.

Definition at line 940 of file RingBuffer.h.

◆ m_timedwrite

template<class DataType>
bool RTC::RingBuffer< DataType >::m_timedwrite
private

Timedwrite flag.

Definition at line 932 of file RingBuffer.h.

◆ m_wcount

template<class DataType>
size_t RTC::RingBuffer< DataType >::m_wcount
private

Counter for writing.

Definition at line 1003 of file RingBuffer.h.

◆ m_wpos

template<class DataType>
size_t RTC::RingBuffer< DataType >::m_wpos
private

pointer to write

Definition at line 976 of file RingBuffer.h.

◆ m_wtimeout

template<class DataType>
coil::TimeValue RTC::RingBuffer< DataType >::m_wtimeout
private

Timeout time for writing.

Definition at line 949 of file RingBuffer.h.


The documentation for this class was generated from the following file:


openrtm_aist
Author(s): Noriaki Ando
autogenerated on Mon Feb 28 2022 23:00:48