OpenRTM-aist 2.0.2
Loading...
Searching...
No Matches
RTC::InPort< DataType > Class Template Reference

InPort template class. More...

#include <InPort.h>

Inheritance diagram for RTC::InPort< DataType >:
Collaboration diagram for RTC::InPort< DataType >:

Public Member Functions

 InPort (const char *name, DataType &value)
 A constructor.
 
 ~InPort () override
 Destructor.
 
virtual const char * name ()
 Get port name.
 
virtual bool isNew (std::string name)
 Check whether the data is newest.
 
virtual bool isNew (coil::vstring &names)
 
bool isNew () override
 Check whether the data is newest.
 
virtual bool isEmpty (std::string name)
 Check whether the data is newest.
 
virtual bool isEmpty (coil::vstring &names)
 
bool isEmpty () override
 Check whether the data is newest.
 
void write (DataType &data) override
 
bool read (std::string name="") override
 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 getStatus (int)
 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.
 
- Public Member Functions inherited from RTC::InPortBase
 InPortBase (const char *name, const char *data_type)
 Constructor.
 
 ~InPortBase () override
 Destructor.
 
virtual void init (coil::Properties &prop)
 Initializing properties.
 
coil::Properties & properties ()
 Get properties.
 
const std::vector< InPortConnector * > & connectors ()
 Connector list.
 
ConnectorInfoList getConnectorProfiles ()
 ConnectorProfile list.
 
coil::vstring getConnectorIds ()
 ConnectorId list.
 
coil::vstring getConnectorNames ()
 Connector name list.
 
InPortConnectorgetConnectorById (const char *id)
 Getting ConnectorProfile by ID.
 
InPortConnectorgetConnectorByName (const char *name)
 Getting Connector by name.
 
bool getConnectorProfileById (const char *id, ConnectorInfo &prof)
 Getting ConnectorProfile by name.
 
bool getConnectorProfileByName (const char *name, ConnectorInfo &prof)
 Getting ConnectorProfile by name.
 
void activateInterfaces () override
 Activate all Port interfaces.
 
void deactivateInterfaces () override
 Deactivate all Port interfaces.
 
void addConnectorDataListener (ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true)
 Adding BufferDataListener type listener.
 
void removeConnectorDataListener (ConnectorDataListenerType type, ConnectorDataListener *listener)
 Removing BufferDataListener type listener.
 
void addConnectorListener (ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true)
 Adding ConnectorListener type listener.
 
void removeConnectorListener (ConnectorListenerType type, ConnectorListener *listener)
 Removing BufferDataListener type listener.
 
bool isLittleEndian ()
 return it whether endian setting.
 
ReturnCode_t connect (ConnectorProfile &connector_profile) override
 [CORBA interface] Connect the Port
 
virtual ConnectorListenersBasegetListeners ()
 Getting listeners holder.
 
ReturnCode_t notify_connect (ConnectorProfile &connector_profile) override
 
- Public Member Functions inherited from RTC::PortBase
 PortBase (const char *name="")
 Constructor.
 
 ~PortBase () override
 Destructor.
 
PortProfile * get_port_profile () override
 [CORBA interface] Get the PortProfile of the Port
 
const PortProfile & getPortProfile () const
 Get the PortProfile of the Port.
 
ConnectorProfileList * get_connector_profiles () override
 [CORBA interface] Get the ConnectorProfileList of the Port
 
ConnectorProfile * get_connector_profile (const char *connector_id) override
 [CORBA interface] Get the ConnectorProfile
 
ReturnCode_t connect (ConnectorProfile &connector_profile) override
 [CORBA interface] Connect the Port
 
ReturnCode_t notify_connect (ConnectorProfile &connector_profile) override
 [CORBA interface] Notify the Ports connection
 
ReturnCode_t disconnect (const char *connector_id) override
 [CORBA interface] Disconnect the Port
 
ReturnCode_t notify_disconnect (const char *connector_id) override
 [CORBA interface] Notify the Ports disconnection
 
ReturnCode_t disconnect_all () override
 [CORBA interface] Disconnect the All Ports
 
void setName (const char *name)
 Set the name of this Port.
 
const char * getName () const
 Get the name of this Port.
 
const PortProfile & getProfile () const
 Get the PortProfile of the Port.
 
void setPortRef (PortService_ptr port_ref)
 Set the object reference of this Port.
 
PortService_ptr getPortRef () const
 Get the object reference of this Port.
 
void setOwner (RTObject_ptr owner)
 Set the owner RTObject of the Port.
 
void setOnPublishInterfaces (ConnectionCallback *on_publish)
 Setting callback called on publish interfaces.
 
void setOnSubscribeInterfaces (ConnectionCallback *on_subscribe)
 Setting callback called on publish interfaces.
 
void setOnConnected (ConnectionCallback *on_connected)
 Setting callback called on connection established.
 
void setOnUnsubscribeInterfaces (ConnectionCallback *on_unsubscribe)
 Setting callback called on unsubscribe interfaces.
 
void setOnDisconnected (ConnectionCallback *on_disconnected)
 Setting callback called on disconnected.
 
void setOnConnectionLost (ConnectionCallback *on_connection_lost)
 Setting callback called on connection lost.
 
void setPortConnectListenerHolder (PortConnectListeners *portconnListeners)
 Setting PortConnectListener holder.
 
virtual DirectPortBasegetDirectPort ()
 

Protected Member Functions

void initConnectorListeners () override
 
- Protected Member Functions inherited from RTC::InPortBase
ReturnCode_t publishInterfaces (ConnectorProfile &cprof) override
 Publish interface information.
 
ReturnCode_t subscribeInterfaces (const ConnectorProfile &cprof) override
 Subscribe to the interface.
 
void unsubscribeInterfaces (const ConnectorProfile &connector_profile) override
 Disconnect the interface connection.
 
void initProviders ()
 InPort provider initialization .
 
void initConsumers ()
 OutPort consumer initialization .
 
bool checkEndian (const coil::Properties &prop, bool &littleEndian)
 Checking endian flag of serializer.
 
InPortProvidercreateProvider (ConnectorProfile &cprof, coil::Properties &prop)
 InPort provider creation .
 
OutPortConsumercreateConsumer (const ConnectorProfile &cprof, coil::Properties &prop)
 InPort provider creation .
 
InPortConnectorcreateConnector (ConnectorProfile &cprof, coil::Properties &prop, InPortProvider *provider)
 InPortPushConnector creation .
 
InPortConnectorcreateConnector (const ConnectorProfile &cprof, coil::Properties &prop, OutPortConsumer *consumer)
 InPortPullConnector creation .
 
OutPortBasegetLocalOutPort (const ConnectorInfo &profile)
 Getting local peer OutPort if available .
 
- Protected Member Functions inherited from RTC::PortBase
virtual ReturnCode_t connectNext (ConnectorProfile &connector_profile)
 Call notify_connect() of the next Port.
 
virtual ReturnCode_t disconnectNext (ConnectorProfile &cprof)
 Call notify_disconnect() of the next Port.
 
virtual void setConnectionLimit (int limit_value)
 Set the maximum number of connections.
 
virtual ReturnCode_t _publishInterfaces ()
 Publish interface information.
 
bool isExistingConnId (const char *id)
 Check whether the given id exists in stored ConnectorProfiles.
 
ConnectorProfile findConnProfile (const char *id)
 Find ConnectorProfile with id.
 
CORBA::Long findConnProfileIndex (const char *id)
 Find ConnectorProfile with id.
 
void updateConnectorProfile (const ConnectorProfile &connector_profile)
 Append or update the ConnectorProfile list.
 
bool eraseConnectorProfile (const char *id)
 Delete the ConnectorProfile.
 
bool appendInterface (const char *instance_name, const char *type_name, PortInterfacePolarity pol)
 Append an interface to the PortInterfaceProfile.
 
bool deleteInterface (const char *name, PortInterfacePolarity pol)
 Delete the interface registration from the PortInterfaceProfile.
 
template<class ValueType >
void addProperty (const char *key, ValueType value)
 Add NameValue data to PortProfile's properties.
 
void appendProperty (const char *key, const char *value)
 Append NameValue data to PortProfile's properties.
 
void updateConnectors ()
 Disconnect ports that doesn't exist.
 
bool checkPorts (::RTC::PortServiceList &ports)
 Existence of ports.
 
void onNotifyConnect (const char *portname, RTC::ConnectorProfile &profile)
 
void onNotifyDisconnect (const char *portname, RTC::ConnectorProfile &profile)
 
void onUnsubscribeInterfaces (const char *portname, RTC::ConnectorProfile &profile)
 
void onPublishInterfaces (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret)
 
void onConnectNextport (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret)
 
void onSubscribeInterfaces (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret)
 
void onConnected (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret)
 
void onDisconnectNextport (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret)
 
void onDisconnected (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret)
 
bool isExistingMarshalingType (coil::Properties &con_prop)
 Whether the specified serializer can be used.
 

Additional Inherited Members

- Public Types inherited from RTC::InPortBase
using ConnectorList = std::vector<InPortConnector*>
 
- Static Protected Member Functions inherited from RTC::PortBase
static bool isEmptyId (const ConnectorProfile &connector_profile)
 Check whether connector_id of ConnectorProfile is empty.
 
static std::string getUUID ()
 Generate the UUID.
 
static void setUUID (ConnectorProfile &connector_profile)
 Generate and set the UUID to the ConnectorProfile.
 
- Protected Attributes inherited from RTC::InPortBase
bool m_singlebuffer
 Buffer mode.
 
CdrBufferBasem_thebuffer
 Buffer .
 
coil::vstring m_providerTypes
 Available providers .
 
coil::vstring m_consumerTypes
 Available consumers .
 
ConnectorList m_connectors
 Connection list .
 
bool m_littleEndian
 Connected Endian .
 
ConnectorListenersBasem_listeners
 ConnectorDataListener listener .
 
- Protected Attributes inherited from RTC::PortBase
coil::Properties m_properties
 Properties .
 
Logger rtclog
 Logger stream .
 
PortProfile m_profile
 PortProfile of the Port .
 
RTC::PortService_var m_objref
 Object Reference of the Port .
 
std::mutex m_profile_mutex
 Mutex of PortProfile .
 
std::mutex m_connectorsMutex
 
std::string m_ownerInstanceName = "unknown"
 Instance name .
 
int m_connectionLimit {-1}
 The maximum number of connections .
 
ConnectionCallbackm_onPublishInterfaces {nullptr}
 Callback functor objects.
 
ConnectionCallbackm_onSubscribeInterfaces {nullptr}
 Callback functor objects.
 
ConnectionCallbackm_onConnected {nullptr}
 Callback functor objects.
 
ConnectionCallbackm_onUnsubscribeInterfaces {nullptr}
 Callback functor objects.
 
ConnectionCallbackm_onDisconnected {nullptr}
 Callback functor objects.
 
ConnectionCallbackm_onConnectionLost {nullptr}
 Callback functor objects.
 
PortConnectListenersm_portconnListeners {nullptr}
 PortConnectListener holder.
 
DirectPortBasem_directport {nullptr}
 

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

◆ InPort()

template<class DataType >
RTC::InPort< DataType >::InPort ( const char * name,
DataType & value )
inline

A constructor.

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

Parameters
nameA name of the InPort. This name is referred by InPortBase::name().
valuetype-T variable that is bound to this InPort.

References RTC::InPortBase::addConnectorDataListener(), RTC::PortBase::addProperty(), CdrMemoryStreamInit(), RTC::getSerializerList(), RTC::InPort< DataType >::initConnectorListeners(), RTC::PortBase::m_directport, RTC::ON_BUFFER_READ, RTC::ON_RECEIVED, and RTC_DEBUG.

◆ ~InPort()

template<class T >
RTC::InPort< T >::~InPort ( )
overridedefault

Destructor.

Destructor

Member Function Documentation

◆ getStatus()

template<class DataType >
DataPortStatus RTC::InPort< DataType >::getStatus ( int )
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
indexConnector index
Returns
Writing status

◆ getStatusList()

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

◆ initConnectorListeners()

template<class DataType >
void RTC::InPort< DataType >::initConnectorListeners ( )
inlineoverrideprotectedvirtual

Reimplemented from RTC::InPortBase.

References RTC::InPortBase::m_listeners.

Referenced by RTC::InPort< DataType >::InPort().

◆ isEmpty() [1/3]

template<class DataType >
bool RTC::InPort< DataType >::isEmpty ( )
inlineoverridevirtual

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

Implements RTC::DirectInPortBase< DataType >.

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

◆ isEmpty() [2/3]

template<class DataType >
virtual bool RTC::InPort< DataType >::isEmpty ( coil::vstring & names)
inlinevirtual

◆ isEmpty() [3/3]

template<class DataType >
virtual bool RTC::InPort< DataType >::isEmpty ( std::string name)
inlinevirtual

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::InPort< DataType >::name(), RTC_DEBUG, and RTC_TRACE.

◆ isNew() [1/3]

template<class DataType >
bool RTC::InPort< DataType >::isNew ( )
inlineoverridevirtual

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

Implements RTC::DirectInPortBase< DataType >.

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

◆ isNew() [2/3]

template<class DataType >
virtual bool RTC::InPort< DataType >::isNew ( coil::vstring & names)
inlinevirtual

◆ isNew() [3/3]

template<class DataType >
virtual bool RTC::InPort< DataType >::isNew ( std::string name)
inlinevirtual

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::InPort< DataType >::name(), RTC_DEBUG, and RTC_TRACE.

◆ name()

template<class DataType >
virtual const char * RTC::InPort< DataType >::name ( )
inlinevirtual

Get port name.

Get port name.

Returns
The port name

Referenced by RTC::InPort< DataType >::isEmpty(), RTC::InPort< DataType >::isNew(), and RTC::InPort< DataType >::read().

◆ operator>>()

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
rhsThe type-T variable to read from InPort's buffer

References CORBA_Util::copyData(), and RTC::InPort< DataType >::read().

◆ read()

template<class DataType >
bool RTC::InPort< DataType >::read ( std::string name = "")
inlineoverridevirtual

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::BUFFER_EMPTY, RTC::BUFFER_TIMEOUT, RTC::InPortConnector::getDirectData(), RTC::InPortBase::m_connectors, RTC::PortBase::m_connectorsMutex, RTC::InPort< DataType >::name(), RTC::PORT_OK, RTC::InPortConnector::read(), RTC_DEBUG, RTC_ERROR, RTC_TRACE, and RTC_WARN.

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

◆ setOnRead()

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_readOnRead<DataType> type object

◆ setOnReadConvert()

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_rconvertOnReadConvert<DataType> type object

◆ update()

template<class DataType >
virtual void RTC::InPort< DataType >::update ( )
inlinevirtual

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

◆ write()

template<class DataType >
void RTC::InPort< DataType >::write ( DataType & data)
inlineoverridevirtual
Parameters
data

Implements RTC::DirectInPortBase< DataType >.

References CORBA_Util::copyData().


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