OpenRTM-aist 2.0.2
|
#include <InPortBase.h>
公開型 | |
using | ConnectorList = std::vector<InPortConnector*> |
公開メンバ関数 | |
InPortBase (const char *name, const char *data_type) | |
コンストラクタ | |
~InPortBase () override | |
デストラクタ | |
virtual void | init (coil::Properties &prop) |
プロパティの初期化 | |
virtual bool | read (std::string name="")=0 |
RTObject_impl::readAll()から呼ばれる仮想関数 | |
coil::Properties & | properties () |
プロパティを取得する | |
const std::vector< InPortConnector * > & | connectors () |
Connector を取得 | |
ConnectorInfoList | getConnectorProfiles () |
ConnectorProfile を取得 | |
coil::vstring | getConnectorIds () |
ConnectorId を取得 | |
coil::vstring | getConnectorNames () |
Connectorの名前を取得 | |
InPortConnector * | getConnectorById (const char *id) |
ConnectorProfileをIDで取得 | |
InPortConnector * | getConnectorByName (const char *name) |
ConnectorProfileを名前で取得 | |
bool | getConnectorProfileById (const char *id, ConnectorInfo &prof) |
ConnectorProfileをIDで取得 | |
bool | getConnectorProfileByName (const char *name, ConnectorInfo &prof) |
ConnectorProfileを名前で取得 | |
void | activateInterfaces () override |
InPortを activates する | |
void | deactivateInterfaces () override |
全ての Port のインターフェースを deactivates する | |
void | addConnectorDataListener (ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true) |
ConnectorDataListener リスナを追加する | |
void | removeConnectorDataListener (ConnectorDataListenerType type, ConnectorDataListener *listener) |
ConnectorDataListener リスナを削除する | |
void | addConnectorListener (ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true) |
ConnectorListener リスナを追加する | |
void | removeConnectorListener (ConnectorListenerType type, ConnectorListener *listener) |
ConnectorDataListener リスナを削除する | |
bool | isLittleEndian () |
endian 設定を返す | |
ReturnCode_t | connect (ConnectorProfile &connector_profile) override |
[CORBA interface] Port の接続を行う | |
virtual ConnectorListenersBase * | getListeners () |
リスナホルダを取得する | |
ReturnCode_t | notify_connect (ConnectorProfile &connector_profile) override |
![]() | |
PortBase (const char *name="") | |
コンストラクタ | |
~PortBase () override | |
デストラクタ | |
PortProfile * | get_port_profile () override |
[CORBA interface] PortProfileを取得する | |
const PortProfile & | getPortProfile () const |
PortProfile を取得する。 | |
ConnectorProfileList * | get_connector_profiles () override |
[CORBA interface] ConnectorProfileListを取得する | |
ConnectorProfile * | get_connector_profile (const char *connector_id) override |
[CORBA interface] ConnectorProfile を取得する | |
ReturnCode_t | connect (ConnectorProfile &connector_profile) override |
[CORBA interface] Port の接続を行う | |
ReturnCode_t | notify_connect (ConnectorProfile &connector_profile) override |
[CORBA interface] Port の接続通知を行う | |
ReturnCode_t | disconnect (const char *connector_id) override |
[CORBA interface] Port の接続を解除する | |
ReturnCode_t | notify_disconnect (const char *connector_id) override |
[CORBA interface] Port の接続解除通知を行う | |
ReturnCode_t | disconnect_all () override |
[CORBA interface] Port の全接続を解除する | |
void | setName (const char *name) |
Port の名前を設定する | |
const char * | getName () const |
Port の名前を取得する | |
const PortProfile & | getProfile () const |
PortProfileを取得する | |
void | setPortRef (PortService_ptr port_ref) |
Port のオブジェクト参照を設定する | |
PortService_ptr | getPortRef () const |
Port のオブジェクト参照を取得する | |
void | setOwner (RTObject_ptr owner) |
Port の owner の RTObject を指定する | |
void | setOnPublishInterfaces (ConnectionCallback *on_publish) |
インターフェースを公開する際に呼ばれるコールバックをセットする | |
void | setOnSubscribeInterfaces (ConnectionCallback *on_subscribe) |
インターフェースを取得する際に呼ばれるコールバックをセットする | |
void | setOnConnected (ConnectionCallback *on_connected) |
接続完了時に呼ばれるコールバックをセットする | |
void | setOnUnsubscribeInterfaces (ConnectionCallback *on_unsubscribe) |
インターフェースを解放する際に呼ばれるコールバックをセットする | |
void | setOnDisconnected (ConnectionCallback *on_disconnected) |
接続解除に呼ばれるコールバックをセットする | |
void | setOnConnectionLost (ConnectionCallback *on_connection_lost) |
ポートの接続がロストした場合に呼び出されるコールバックをセットする | |
void | setPortConnectListenerHolder (PortConnectListeners *portconnListeners) |
PortConnectListeners のホルダをセットする | |
virtual DirectPortBase * | getDirectPort () |
direct通信用ポートオブジェクト取得 | |
限定公開メンバ関数 | |
ReturnCode_t | publishInterfaces (ConnectorProfile &cprof) override |
Interface情報を公開する | |
ReturnCode_t | subscribeInterfaces (const ConnectorProfile &cprof) override |
Interfaceに接続する | |
void | unsubscribeInterfaces (const ConnectorProfile &connector_profile) override |
Interfaceへの接続を解除する | |
void | initProviders () |
InPort provider の初期化 | |
void | initConsumers () |
OutPort consumer の初期化 | |
bool | checkEndian (const coil::Properties &prop, bool &littleEndian) |
シリアライザのエンディアンをチェックする | |
InPortProvider * | createProvider (ConnectorProfile &cprof, coil::Properties &prop) |
InPort provider の生成 | |
OutPortConsumer * | createConsumer (const ConnectorProfile &cprof, coil::Properties &prop) |
OutPort consumer の生成 | |
InPortConnector * | createConnector (ConnectorProfile &cprof, coil::Properties &prop, InPortProvider *provider) |
InPortPushConnector の生成 | |
InPortConnector * | createConnector (const ConnectorProfile &cprof, coil::Properties &prop, OutPortConsumer *consumer) |
InPortPullConnector の生成 | |
OutPortBase * | getLocalOutPort (const ConnectorInfo &profile) |
ローカルのピアOutPortを取得 | |
virtual void | initConnectorListeners () |
コネクタリスナの初期化 | |
![]() | |
virtual ReturnCode_t | connectNext (ConnectorProfile &connector_profile) |
次の Port に対して notify_connect() をコールする | |
virtual ReturnCode_t | disconnectNext (ConnectorProfile &cprof) |
次の Port に対して notify_disconnect() をコールする | |
virtual void | setConnectionLimit (int limit_value) |
接続の最大数を設定する。 | |
virtual ReturnCode_t | _publishInterfaces () |
Interface情報を公開する | |
bool | isExistingConnId (const char *id) |
id が既存の ConnectorProfile のものかどうか判定する | |
ConnectorProfile | findConnProfile (const char *id) |
id を持つ ConnectorProfile を探す | |
CORBA::Long | findConnProfileIndex (const char *id) |
id を持つ ConnectorProfile を探す | |
void | updateConnectorProfile (const ConnectorProfile &connector_profile) |
ConnectorProfile の追加もしくは更新 | |
bool | eraseConnectorProfile (const char *id) |
ConnectorProfile を削除する | |
bool | appendInterface (const char *instance_name, const char *type_name, PortInterfacePolarity pol) |
PortInterfaceProfile に インターフェースを登録する | |
bool | deleteInterface (const char *name, PortInterfacePolarity pol) |
PortInterfaceProfile からインターフェース登録を削除する | |
template<class ValueType > | |
void | addProperty (const char *key, ValueType value) |
PortProfile の properties に NameValue 値を追加する | |
void | appendProperty (const char *key, const char *value) |
PortProfile の properties に NameValue 値を要素に追加する | |
void | updateConnectors () |
存在しないポートをdisconnectする。 | |
bool | checkPorts (::RTC::PortServiceList &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) |
指定のシリアライザが使用可能かを判定する | |
限定公開変数類 | |
bool | m_singlebuffer |
バッファモード | |
CdrBufferBase * | m_thebuffer |
バッファ | |
coil::vstring | m_providerTypes |
利用可能provider | |
coil::vstring | m_consumerTypes |
利用可能consumer | |
ConnectorList | m_connectors |
接続リスト | |
bool | m_littleEndian |
接続エンディアン | |
ConnectorListenersBase * | m_listeners |
ConnectorDataListener リスナ | |
![]() | |
coil::Properties | m_properties |
プロパティ | |
Logger | rtclog |
ロガーストリーム | |
PortProfile | m_profile |
Port の PortProfile | |
RTC::PortService_var | m_objref |
Port の オブジェクト参照 | |
std::mutex | m_profile_mutex |
PortProfile の mutex | |
std::mutex | m_connectorsMutex |
std::string | m_ownerInstanceName = "unknown" |
インスタンス名 | |
int | m_connectionLimit {-1} |
Port の接続の最大数 | |
ConnectionCallback * | m_onPublishInterfaces {nullptr} |
Callback functor オブジェクト | |
ConnectionCallback * | m_onSubscribeInterfaces {nullptr} |
Callback functor オブジェクト | |
ConnectionCallback * | m_onConnected {nullptr} |
Callback functor オブジェクト | |
ConnectionCallback * | m_onUnsubscribeInterfaces {nullptr} |
Callback functor オブジェクト | |
ConnectionCallback * | m_onDisconnected {nullptr} |
Callback functor オブジェクト | |
ConnectionCallback * | m_onConnectionLost {nullptr} |
Callback functor オブジェクト | |
PortConnectListeners * | m_portconnListeners {nullptr} |
PortConnectListenerホルダ | |
DirectPortBase * | m_directport {nullptr} |
その他の継承メンバ | |
![]() | |
static bool | isEmptyId (const ConnectorProfile &connector_profile) |
ConnectorProfile の connector_id フィールドが空かどうか判定 | |
static std::string | getUUID () |
UUIDを生成する | |
static void | setUUID (ConnectorProfile &connector_profile) |
UUIDを生成し ConnectorProfile にセットする | |
using RTC::InPortBase::ConnectorList = std::vector<InPortConnector*> |
RTC::InPortBase::InPortBase | ( | const char * | name, |
const char * | data_type ) |
コンストラクタ
コンストラクタ
name | ポート名称 |
data_type | データタイプ |
|
override |
デストラクタ
デストラクタ
|
overridevirtual |
void RTC::InPortBase::addConnectorDataListener | ( | ConnectorDataListenerType | type, |
ConnectorDataListener * | listener, | ||
bool | autoclean = true ) |
ConnectorDataListener リスナを追加する
バッファ書き込みまたは読み出しイベントに関連する各種リスナを設定する。
設定できるリスナのタイプとコールバックイベントは以下の通り
リスナは ConnectorDataListener を継承し、以下のシグニチャを持つ operator() を実装している必要がある。
ConnectorDataListener:: operator()(const ConnectorProfile&, const cdrStream&)
デフォルトでは、この関数に与えたリスナオブジェクトの所有権は OutPortに移り、OutPort解体時もしくは、 removeConnectorDataListener() により削除時に自動的に解体される。 リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引 数に false を指定し、自動的な解体を抑制することができる。
listener_type | リスナタイプ |
listener | リスナオブジェクトへのポインタ |
autoclean | リスナオブジェクトの自動的解体を行うかどうかのフラグ |
参照元 RTC::EventInPort< FsmType >::bindEvent(), RTC::EventInPort< FsmType >::bindEvent(), RTC::InPort< DataType >::InPort().
void RTC::InPortBase::addConnectorListener | ( | ConnectorListenerType | type, |
ConnectorListener * | listener, | ||
bool | autoclean = true ) |
ConnectorListener リスナを追加する
バッファ書き込みまたは読み出しイベントに関連する各種リスナを設定する。
設定できるリスナのタイプは
リスナは以下のシグニチャを持つ operator() を実装している必要がある。
ConnectorListener::operator()(const ConnectorProfile&)
デフォルトでは、この関数に与えたリスナオブジェクトの所有権は OutPortに移り、OutPort解体時もしくは、 removeConnectorListener() により削除時に自動的に解体される。 リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引 数に false を指定し、自動的な解体を抑制することができる。
listener_type | リスナタイプ |
listener | リスナオブジェクトへのポインタ |
autoclean | リスナオブジェクトの自動的解体を行うかどうかのフラグ |
|
protected |
シリアライザのエンディアンをチェックする
与えられたプロパティに設定されている、データのシリアライザのエン ディアン指定をチェックする。正しいエンディアン指定がなされていれ ば、true を返し、引数 littleEndian に、設定値がリトルエンディア ンであれば true が、ビッグエンディアンであれば false が返される。
prop | チェックするプロパティ |
littleEndian | エンディアン情報(true:little,false:big) |
|
override |
[CORBA interface] Port の接続を行う
与えられた ConnectoionProfile の情報に基づき、Port間の接続を確立 する。この関数は主にアプリケーションプログラムやツールから呼び出 すことを前提としている。
connector_profile | ConnectorProfile |
const std::vector< InPortConnector * > & RTC::InPortBase::connectors | ( | ) |
Connector を取得
現在所有しているコネクタを取得する。
|
protected |
Connector を生成し、生成が成功すれば m_connectors に保存する。 生成に失敗した場合 0 を返す。
|
protected |
Connector を生成し、生成が成功すれば m_connectors に保存する。 生成に失敗した場合 0 を返す。
|
protected |
OutPort consumer の生成
OutPortConsumer を生成する。 生成に失敗した場合 0 を返す。
|
protected |
InPort provider の生成
InPortProvider を生成し、情報を ConnectorProfile に公開する。 生成に失敗した場合 0 を返す。
|
overridevirtual |
InPortConnector * RTC::InPortBase::getConnectorById | ( | const char * | id | ) |
ConnectorProfileをIDで取得
現在所有しているコネクタをIDで取得する。
id | Connector ID |
InPortConnector * RTC::InPortBase::getConnectorByName | ( | const char * | name | ) |
ConnectorProfileを名前で取得
現在所有しているコネクタを名前で取得する。
name | Connector name |
coil::vstring RTC::InPortBase::getConnectorIds | ( | ) |
ConnectorId を取得
現在所有しているコネクタのIDを取得する。
coil::vstring RTC::InPortBase::getConnectorNames | ( | ) |
Connectorの名前を取得
現在所有しているコネクタの名前を取得する。
bool RTC::InPortBase::getConnectorProfileById | ( | const char * | id, |
ConnectorInfo & | prof ) |
ConnectorProfileをIDで取得
現在所有しているコネクタをIDで取得する。
id | Connector ID |
prof | ConnectorProfile |
bool RTC::InPortBase::getConnectorProfileByName | ( | const char * | name, |
ConnectorInfo & | prof ) |
ConnectorProfileを名前で取得
現在所有しているコネクタを名前で取得する。
name | Connector name |
prof | ConnectorProfile |
ConnectorInfoList RTC::InPortBase::getConnectorProfiles | ( | ) |
ConnectorProfile を取得
現在所有しているコネクタのProfileを取得する。
|
virtual |
|
protected |
ローカルのピアOutPortを取得
|
virtual |
|
protectedvirtual |
コネクタリスナの初期化
RTC::InPort< DataType >で再実装されています。
|
protected |
OutPort consumer の初期化
|
protected |
InPort provider の初期化
bool RTC::InPortBase::isLittleEndian | ( | ) |
endian 設定を返す
endian 設定のbool値を返す。
|
override |
coil::Properties & RTC::InPortBase::properties | ( | ) |
プロパティを取得する
ポートのプロパティを取得する。
|
overrideprotectedvirtual |
Interface情報を公開する
Interface情報を公開する。 引数の ConnectorProfile に格納されている dataflow_type が push 型 の場合は、指定された interface_type の InPortProvider に関する情報 を ConnectorProfile::properties に書込み呼び出し側に戻す。
dataport.dataflow_type
connector_profile | コネクタプロファイル |
RTC::PortBaseを実装しています。
|
pure virtual |
RTObject_impl::readAll()から呼ばれる仮想関数
DataPort からデータを読み出す
RTC::EventInPort< FsmType >, RTC::InPort< DataType >で実装されています。
void RTC::InPortBase::removeConnectorDataListener | ( | ConnectorDataListenerType | type, |
ConnectorDataListener * | listener ) |
void RTC::InPortBase::removeConnectorListener | ( | ConnectorListenerType | type, |
ConnectorListener * | listener ) |
|
overrideprotectedvirtual |
Interfaceに接続する
Interfaceに接続する。 Portが所有するConsumerに適合するProviderに関する情報を ConnectorProfile::properties から抽出し、 ConsumerにCORBAオブジェクト参照を設定する。
connector_profile | コネクタ・プロファイル |
RTC::PortBaseを実装しています。
|
overrideprotectedvirtual |
Interfaceへの接続を解除する
Interfaceへの接続を解除する。 与えられたConnectorProfileに関連するConsumerに設定された全てのObjectを 解放し接続を解除する。
connector_profile | コネクタ・プロファイル |
RTC::PortBaseを実装しています。
|
protected |
|
protected |
利用可能consumer
|
protected |
|
protected |
接続エンディアン
|
protected |
利用可能provider
|
protected |
バッファモード
true:single buffer mode. false:multi buffer mode.
|
protected |
バッファ