RTC::InPort< DataType > Class Template Reference

InPort template class. More...

#include <InPort.h>

Inheritance diagram for RTC::InPort< DataType >:

RTC::InPortBase RTC::PortBase RTC::DataPortStatus

List of all members.

Public Member Functions

DATAPORTSTATUS_ENUM 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 (void)
 Destructor.
virtual const char * name ()
 Get port name.
virtual bool isNew ()
 Check whether the data is newest.
virtual bool isEmpty ()
 Check whether the data is newest.
DataType read ()
 Readout the value from DataPort.
virtual 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 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>
class RTC::InPort< DataType >

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>
DATAPORTSTATUS_ENUM RTC::InPort< DataType >::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>
virtual RTC::InPort< DataType >::~InPort ( void   )  [inline, virtual]

Destructor.

Destructor


Member Function Documentation

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

Get port name.

Get port name.

Returns:
The port name

template<class DataType>
virtual bool RTC::InPort< DataType >::isNew (  )  [inline, virtual]

Check whether the data is newest.

Check whether the data stored at a current buffer position is newest.

Returns:
Newest data check result ( true:Newest data. Data has not been readout yet. false:Past data.Data has already been readout.)

template<class DataType>
virtual bool RTC::InPort< DataType >::isEmpty ( void   )  [inline, virtual]

Check whether the data is newest.

Check whether the data stored at a current buffer position is newest.

Returns:
Newest data check result ( true:Newest data. Data has not been readout yet. false:Past data.Data has already been readout.)

template<class DataType>
DataType RTC::InPort< DataType >::read (  )  [inline]

Readout the value from DataPort.

Readout the value from DataPort

Returns:
Readout data

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

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>
void RTC::InPort< DataType >::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>
void RTC::InPort< DataType >::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>
void RTC::InPort< DataType >::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>
void RTC::InPort< DataType >::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>
void RTC::InPort< DataType >::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>
void RTC::InPort< DataType >::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>
void RTC::InPort< DataType >::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 Sun May 24 14:08:45 2009 for OpenRTM by  doxygen 1.5.3