RTC::InPort< DataType, Buffer > Class Template Reference

InPort template class. More...

#include <InPort.h>

List of all members.

Public Member Functions

 InPort (const char *name, DataType &value, int bufsize=64, bool read_block=false, bool write_block=false, int read_timeout=0, int write_timeout=0)
 A constructor.
virtual ~InPort ()
 Destructor.
virtual const char * name ()
 Get port name.
bool write (const DataType &value)
 Write the value to DataPort.
DataType read ()
 Readout the value from DataPort.
virtual void init (DataType &value)
 Initialize the ring buffer value in InPort.
void update ()
 Read the newly value to type-T variable which is bound to InPort's buffer.
void operator>> (DataType &rhs)
 Read the newly value data in InPort to type-T variable.
void operator<< (DataType &value)
 Write the type-T data to DataPort.
void setOnWrite (OnWrite< DataType > *on_write)
 Set callback for inputting data into the InPort buffer.
void setOnWriteConvert (OnWriteConvert< DataType > *on_wconvert)
 Set callback when data is written into the InPort buffer.
void setOnRead (OnRead< DataType > *on_read)
 Set callback when data is read from the InPort buffer.
void setOnReadConvert (OnReadConvert< DataType > *on_rconvert)
 Set callback when data is readout to the InPort buffer.
void setOnOverflow (OnOverflow< DataType > *on_overflow)
 Set callback when the InPort buffer occurs overflow.
void setOnUnderflow (OnUnderflow< DataType > *on_underflow)
 Set callback when the InPort buffer occurs underflow.


Detailed Description

template<class DataType, template< class DataType > class Buffer = RingBuffer>
class RTC::InPort< DataType, Buffer >

InPort template class.

This is a template class that implements InPort. <T> is the type defined in BasicDataType.idl and must be the structure which has both Time type tm and type-T data as a member. InPort has a ring buffer internally, and stores the received data externally in this buffer one by one. The size of ring buffer can be specified according to the argument of constructor, though the default size is 64. Unread data and data which is already read are managed with the flag, and the data can be handled by the isNew(), write(), read(), isFull() and isEmpty() method etc.

Since:
0.2.0

Constructor & Destructor Documentation

template<class DataType, template< class DataType > class Buffer = RingBuffer>
RTC::InPort< DataType, Buffer >::InPort ( const char *  name,
DataType &  value,
int  bufsize = 64,
bool  read_block = false,
bool  write_block = false,
int  read_timeout = 0,
int  write_timeout = 0 
) [inline]

A constructor.

constructor. This is bound to type-T variable given as a parameter.

Parameters:
name A name of the InPort. This name is referred by InPortBase::name().
value type-T variable that is bound to this InPort.
bufsize Buffer length of internal ring buffer of InPort (The default value:64)
read_block Flag of reading block. When there are not unread data at reading data, set whether to block data until receiving the next data. (The default value:false)
write_block Flag of writing block. If the buffer was full at writing data, set whether to block data until the buffer has space. (The default value:false)
read_timeout Data reading timeout time (millisecond) when not specifying read blocking. (The default value:0)
write_timeout Data writing timeout time (millisecond) when not specifying writing block. (The default value:0)

template<class DataType, template< class DataType > class Buffer = RingBuffer>
virtual RTC::InPort< DataType, Buffer >::~InPort (  )  [inline, virtual]

Destructor.

Destructor


Member Function Documentation

template<class DataType, template< class DataType > class Buffer = RingBuffer>
virtual const char* RTC::InPort< DataType, Buffer >::name (  )  [inline, virtual]

Get port name.

Get port name.

Returns:
The port name

template<class DataType, template< class DataType > class Buffer = RingBuffer>
bool RTC::InPort< DataType, Buffer >::write ( const DataType &  value  )  [inline]

Write the value to DataPort.

Write the value to DataPort

Parameters:
value The target data for the writing
Returns:
Writing result (Successful:true, Failed:false)

template<class DataType, template< class DataType > class Buffer = RingBuffer>
DataType RTC::InPort< DataType, Buffer >::read (  )  [inline]

Readout the value from DataPort.

Readout the value from DataPort

Returns:
Readout data

template<class DataType, template< class DataType > class Buffer = RingBuffer>
virtual void RTC::InPort< DataType, Buffer >::init ( DataType &  value  )  [inline, virtual]

Initialize the ring buffer value in InPort.

Initialize the ring buffer in InPort by specified value. (Currently, commented out)

Parameters:
value The target initialization data

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::update (  )  [inline]

Read the newly value to type-T variable which is bound to InPort's buffer.

Read the newly value to type-T data which is bound to InPort's buffer. The type-T variable must be bound to InPort in constructor. Since this method assumes to be used for polymorphic, its argument and the return value do not depend on type.

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::operator>> ( DataType &  rhs  )  [inline]

Read the newly value data in InPort to type-T variable.

Read the newly data set in InPort and set to specified data variable.

Parameters:
rhs The type-T variable to read from InPort's buffer

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::operator<< ( DataType &  value  )  [inline]

Write the type-T data to DataPort.

Write the given type-T data to DataPort.

Parameters:
value The type-T variable to write to DaraPort

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnWrite ( OnWrite< DataType > *  on_write  )  [inline]

Set callback for inputting data into the InPort buffer.

Set the callback object invoked when data was put in the InPort's buffer. The callback object which was set inherits InPort<DataType>::OnPut class, and the method operator(), which has the argument "const DataType&" and the return value "void", need to be implemented.

Callback object should be implemented as follow:
struct MyOnPutCallback : public InPort<DataType> {
void operator()(const DataType data) {
Operation
}
};
and should be set as follow:
m_inport.setOnPut(new MyOnPutCallback());

Parameters:
on_write OnWrite<DataType> type object

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnWriteConvert ( OnWriteConvert< DataType > *  on_wconvert  )  [inline]

Set callback when data is written into the InPort buffer.

Set the callback object that is invoked when data is written into the InPort's buffer. The return value of the callback object is set to the buffer.

Parameters:
on_wconvert OnWriteConvert<DataType> type object

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnRead ( OnRead< DataType > *  on_read  )  [inline]

Set callback when data is read from the InPort buffer.

Set the callback object that is invoked right before data is read from the InPort's buffer

Parameters:
on_read OnRead<DataType> type object

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnReadConvert ( OnReadConvert< DataType > *  on_rconvert  )  [inline]

Set callback when data is readout to the InPort buffer.

Set the callback object that is invoked when data is readout to the InPort's buffer. The return value of callback object is the return result of the read() method.

Parameters:
on_rconvert OnReadConvert<DataType> type object

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnOverflow ( OnOverflow< DataType > *  on_overflow  )  [inline]

Set callback when the InPort buffer occurs overflow.

Set the callback object that is invoked when the buffer overflow was detected in the InPort's buffer.

Parameters:
on_overflow OnOverflow<DataType> type object

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnUnderflow ( OnUnderflow< DataType > *  on_underflow  )  [inline]

Set callback when the InPort buffer occurs underflow.

Set the callback object that is invoked when the buffer underflow was detected in the InPort's buffer.

Parameters:
on_underflow OnUnderflow<DataType> type object


Generated on Thu May 29 15:03:33 2008 for OpenRTM by  doxygen 1.5.3