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.
bool 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.
DataPortStatus::Enum getStatus (int index)
 Getting specified connector's writing status.
DataPortStatusList getStatusList ()
 Getting specified connector's writing status list.
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.

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 >
DataPortStatus::Enum RTC::InPort< DataType >::getStatus ( int  index  )  [inline]

Getting specified connector's writing status.

An InPort has Connectors that are virtual data stream channel for each connection. "write()" function write into these Connectors, and each Connector returns writing-status. write() function will return a true value if all Connectors return normal status, and a false value will be returned if at least one Connector failed. This function can be used to inspect each return status

Parameters:
index Connector index
Returns:
Writing status
template<class DataType >
DataPortStatusList RTC::InPort< DataType >::getStatusList (  )  [inline]

Getting specified connector's writing status list.

An InPort has Connectors that are virtual data stream channel for each connection. "write()" function write into these Connectors, and each Connector returns writing-status. write() function will return a true value if all Connectors return normal status, and a false value will be returned if at least one Connector failed. This function can be used to inspect each return status

Returns:
Writing status list
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.)

References RTC::InPortBase::m_connectors, RTC::PortBase::m_connectorsMutex, RTC_DEBUG, and RTC_TRACE.

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.)

References RTC::InPortBase::m_connectors, RTC::PortBase::m_connectorsMutex, RTC_DEBUG, and RTC_TRACE.

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 >
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

References RTC::InPort< DataType >::read().

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

Readout the value from DataPort.

Readout the value from DataPort

  • When Callback functor OnRead is already set, OnRead will be invoked before reading from the buffer held by DataPort.
  • When the buffer held by DataPort can detect the underflow, and when it detected the underflow at reading, callback functor OnUnderflow will be invoked.
  • When callback functor OnReadConvert is already set, the return value of operator() of OnReadConvert will be the return value of read().
  • When timeout of reading is already set by setReadTimeout(), it waits for only timeout time until the state of the buffer underflow is reset, and if OnUnderflow is already set, this will be invoked to return.
Returns:
Readout result (Successful:true, Failed:false)

Implements RTC::InPortBase.

References RTC::DataPortStatus::BUFFER_EMPTY, RTC::DataPortStatus::BUFFER_TIMEOUT, RTC::InPortBase::m_connectors, RTC::PortBase::m_connectorsMutex, RTC::DataPortStatus::PORT_OK, RTC_DEBUG, RTC_ERROR, RTC_TRACE, and RTC_WARN.

Referenced by RTC::InPort< DataType >::operator>>(), and RTC::InPort< DataType >::update().

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 >
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.

References RTC::InPort< DataType >::read().

Generated on Fri Oct 28 18:31:18 2016 for OpenRTM-aist by  doxygen 1.6.3