OpenRTM-aist 2.0.2
|
Port の基底クラス [詳解]
#include <PortBase.h>
クラス | |
struct | find_conn_id |
id を持つ ConnectorProfile を探す Functor [詳解] | |
struct | find_interface |
name と polarity から interface を探す Functor [詳解] | |
struct | find_port_ref |
コンストラクタ引数 port_ref と同じオブジェクト参照を探す Functor [詳解] | |
公開メンバ関数 | |
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 の全接続を解除する | |
virtual void | activateInterfaces ()=0 |
Port の全てのインターフェースを activates する | |
virtual void | deactivateInterfaces ()=0 |
全ての Port のインターフェースを deactivates する | |
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通信用ポートオブジェクト取得 | |
限定公開メンバ関数 | |
virtual ReturnCode_t | publishInterfaces (ConnectorProfile &connector_profile)=0 |
Interface 情報を公開する | |
virtual ReturnCode_t | connectNext (ConnectorProfile &connector_profile) |
次の Port に対して notify_connect() をコールする | |
virtual ReturnCode_t | disconnectNext (ConnectorProfile &cprof) |
次の Port に対して notify_disconnect() をコールする | |
virtual ReturnCode_t | subscribeInterfaces (const ConnectorProfile &connector_profile)=0 |
Interface 情報を公開する | |
virtual void | unsubscribeInterfaces (const ConnectorProfile &connector_profile)=0 |
Interface の接続を解除する | |
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) |
指定のシリアライザが使用可能かを判定する | |
静的限定公開メンバ関数 | |
static bool | isEmptyId (const ConnectorProfile &connector_profile) |
ConnectorProfile の connector_id フィールドが空かどうか判定 | |
static std::string | getUUID () |
UUIDを生成する | |
static void | setUUID (ConnectorProfile &connector_profile) |
UUIDを生成し ConnectorProfile にセットする | |
限定公開変数類 | |
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} |
Port の基底クラス
RTC::Port の基底となるクラス。 RTC::Port はほぼ UML Port の概念を継承しており、ほぼ同等のものとみなす ことができる。RT コンポーネントのコンセプトにおいては、 Port はコンポーネントに付属し、コンポーネントが他のコンポーネントと相互作用 を行う接点であり、通常幾つかのインターフェースと関連付けられる。 コンポーネントは Port を通して外部に対しインターフェースを提供または要求 することができ、Portはその接続を管理する役割を担う。
Port の具象クラスは、通常 RT コンポーネントインスタンス生成時に同時に 生成され、提供・要求インターフェースを登録した後、RT コンポーネントに 登録され、外部からアクセス可能な Port として機能することを想定している。
RTC::Port は CORBA インターフェースとして以下のオペレーションを提供する。
このクラスでは、これらのオペレーションの実装を提供する。
これらのオペレーションのうち、get_port_profile(), get_connector_profiles(), get_connector_profile(), connect(), disconnect(), disconnect_all() は、 サブクラスにおいて特に振る舞いを変更する必要がないため、オーバーライド することは推奨されない。
notify_connect(), notify_disconnect() については、サブクラスが提供・要求 するインターフェースの種類に応じて、振る舞いを変更する必要が生ずる 可能性があるが、これらを直接オーバーライドすることは推奨されず、 後述の notify_connect(), notify_disconnect() の項においても述べられる通り これらの関数に関連した protected 関数をオーバーライドすることにより 振る舞いを変更することが推奨される。
|
explicit |
コンストラクタ
PortBase のコンストラクタは Port 名 name を引数に取り初期化を行う と同時に、自分自身を CORBA Object として活性化し、自身の PortProfile の port_ref に自身のオブジェクトリファレンスを格納する。 名前には、"." 以外の文字列を使用することができる。
name | Port の名前(デフォルト値:"") |
|
override |
デストラクタ
デストラクタでは、PortService CORBA オブジェクトの deactivate を 行う。deactivateに際して例外を投げることはない。
|
protectedvirtual |
Interface情報を公開する
Interface情報を公開する。
dataport.dataflow_type
|
pure virtual |
Port の全てのインターフェースを activates する
Port に登録されている全てのインターフェースを activate する。
RTC::CorbaPort, RTC::InPortBase, RTC::OutPortBaseで実装されています。
|
inlineprotected |
PortProfile の properties に NameValue 値を追加する
PortProfile の properties に NameValue 値を追加する。 追加するデータの型をValueTypeで指定する。
key | properties の name |
value | properties の value |
参照先 m_profile, NVUtil::newNV(), CORBA_SeqUtil::push_back().
参照元 RTC::InPort< DataType >::InPort(), RTC::OutPort< DataType >::OutPort().
|
protected |
PortInterfaceProfile に インターフェースを登録する
このオペレーションは Port が持つ PortProfile の、PortInterfaceProfile にインターフェースの情報を追加する。 この情報は、get_port_profile() によって得られる PortProfile のうち PortInterfaceProfile の値を変更するのみであり、実際にインターフェースを 提供したり要求したりする場合には、サブクラスで、 publishInterface() , subscribeInterface() 等の関数を適切にオーバーライドしインターフェースの 提供、要求処理を行わなければならない。
インターフェース(のインスタンス)名は Port 内で一意でなければならない。 同名のインターフェースがすでに登録されている場合、この関数は false を 返す。
name | インターフェースのインスタンスの名前 |
type_name | インターフェースの型の名前 |
pol | インターフェースの属性 (RTC::PROVIDED もしくは RTC:REQUIRED) |
|
inlineprotected |
PortProfile の properties に NameValue 値を要素に追加する
PortProfile の properties に NameValue 値を要素に追加する。この 関数により設定された properties は get_prot_profile() により外部 から参照される。
key | properties の name |
value | properties の value |
|
protected |
ポートの存在を確認する。
ports | 確認するポート |
|
override |
[CORBA interface] Port の接続を行う
与えられた ConnectoionProfile の情報に基づき、Port間の接続を確立 する。この関数は主にアプリケーションプログラムやツールから呼び出 すことを前提としている。
connector_profile | ConnectorProfile |
|
protectedvirtual |
次の Port に対して notify_connect() をコールする
ConnectorProfile の port_ref 内に格納されている Port のオブジェクト リファレンスのシーケンスの中から、自身の Port の次の Port に対して notify_connect() をコールする。
connector_profile | 接続に関するプロファイル情報 |
|
pure virtual |
全ての Port のインターフェースを deactivates する
Port に登録されている全てのインターフェースを deactivate する。
RTC::CorbaPort, RTC::InPortBase, RTC::OutPortBaseで実装されています。
|
protected |
PortInterfaceProfile からインターフェース登録を削除する
このオペレーションは Port が持つ PortProfile の、PortInterfaceProfile からインターフェースの情報を削除する。
name | インターフェースのインスタンスの名前 |
pol | インターフェースの属性 (RTC::PROVIDED もしくは RTC:REQUIRED) |
|
override |
[CORBA interface] Port の接続を解除する
このオペレーションは与えられた connector_id に対応する接続を解除 する。connector_id は通常、システム全体において一意な UUID の文 字列であり、事前に connect()/notify_connect() の呼び出しにより確 立された接続プロファイル ConnectorProfile::connector_id に対応す る。
connector_id | ConnectorProfile の ID |
|
override |
[CORBA interface] Port の全接続を解除する
このオペレーションはこの Port に関連した全ての接続を解除する。
|
protectedvirtual |
次の Port に対して notify_disconnect() をコールする
ConnectorProfile の port_ref 内に格納されている Port のオブジェクト リファレンスのシーケンスの中から、自身の Port の次の Port に対して notify_disconnect() をコールする。
connector_profile | 接続に関するプロファイル情報 |
|
protected |
ConnectorProfile を削除する
このオペレーションは Port の PortProfile が保持している ConnectorProfileList のうち与えられた id を持つ ConnectorProfile を削除する。
id | 削除する ConnectorProfile の id |
|
protected |
id を持つ ConnectorProfile を探す
このオペレーションは与えられた ID を持つ ConnectorProfile を Port が もつ ConnectorProfile のリスト中から探す。 もし、同一の id を持つ ConnectorProfile がなければ、空の ConnectorProfile が返される。
id | 検索する connector_id |
|
protected |
id を持つ ConnectorProfile を探す
このオペレーションは与えられた ID を持つ ConnectorProfile を Port が もつ ConnectorProfile のリスト中から探しインデックスを返す。 もし、同一の id を持つ ConnectorProfile がなければ、-1 を返す。
id | 検索する connector_id |
|
override |
[CORBA interface] ConnectorProfile を取得する
connector_id で指定された ConnectorProfile を返す。この関数は CORBA オペレーションであり、CORBA のメモリ管理規則に従い、呼び出 し側は返される ConnectorProfile オブジェクトを解体する責任がある。
connector_id | ConnectorProfile の ID |
|
override |
[CORBA interface] ConnectorProfileListを取得する
Portが保持する ConnectorProfile の sequence を返す。この関数は CORBA オペレーションであり、CORBA のメモリ管理規則に従い、呼び出 し側は返される ConnectorProfileList オブジェクトを解体する責任が ある。
ConnectorProfile は Port 間の接続プロファイル情報を保持する構造体であり、 接続時にPort間で情報交換を行い、関連するすべての Port で同一の値が 保持される。 ConnectorProfile は以下のメンバーを保持している。
|
override |
[CORBA interface] PortProfileを取得する
Portが保持するPortProfileを返す。この関数は CORBA オペレーション であり、CORBA のメモリ管理規則に従い、呼び出し側は返される PortProfile オブジェクトを解体する責任がある。PortProfile 構造体 は以下のメンバーを持つ。
|
virtual |
direct通信用ポートオブジェクト取得
参照元 RTC::InPortConnector::getDirectData(), RTC::OutPortConnector::write().
const char * RTC::PortBase::getName | ( | ) | const |
Port の名前を取得する
Port の名前を取得する。
const PortProfile & RTC::PortBase::getPortProfile | ( | ) | const |
PortProfile を取得する。
この関数は、オブジェクト内部に保持されている PortProfile の const 参照を返す const 関数である。
PortService_ptr RTC::PortBase::getPortRef | ( | ) | const |
Port のオブジェクト参照を取得する
このオペレーションは Port の PortProfile が保持している この Port 自身のオブジェクト参照を取得する。
const PortProfile & RTC::PortBase::getProfile | ( | ) | const |
PortProfileを取得する
Portが保持する PortProfile の const 参照を返す。
|
staticprotected |
UUIDを生成する
このオペレーションは UUID を生成する。
|
staticprotected |
ConnectorProfile の connector_id フィールドが空かどうか判定
指定された ConnectorProfile の connector_id が空であるかどうかの判定を 行う。
connector_profile | 判定対象コネクタプロファイル |
|
protected |
id が既存の ConnectorProfile のものかどうか判定する
このオペレーションは与えられた ID が既存の ConnectorProfile のリスト中に 存在するかどうか判定する。
id | 判定する connector_id |
|
protected |
指定のシリアライザが使用可能かを判定する
con_prop | コネクタプロファイルのプロパティ |
|
override |
[CORBA interface] Port の接続通知を行う
このオペレーションは、Port間の接続が行われる際に、Port間で内部的 に呼ばれるオペレーションであって、通常アプリケーションプログラム や、Port以外のRTC関連オブジェクト等から呼び出されることは想定さ れていない。
notify_connect() 自体はテンプレートメソッドパターンとして、サブ クラスで実装されることが前提の publishInterfaces(), subscribeInterfaces() の2つの関数を内部で呼び出す。処理の手順は 以下の通りである。
notify_connect() は ConnectorProfile::ports に格納されている Port の順序に従って、カスケード状に呼び出しを行うことにより、イ ンターフェース情報の公開と取得を関連すすべてのポートに対して行う。 このカスケード呼び出しは途中で中断されることはなく、必ず ConnectorProfile::ports に格納されている全ポートに対して行われる。
connector_profile | ConnectorProfile |
|
override |
[CORBA interface] Port の接続解除通知を行う
このオペレーションは、Port間の接続解除が行われる際に、Port間で内 部的に呼ばれるオペレーションであり、通常アプリケーションプログラ ムや、 Port 以外の RTC 関連オブジェクト等から呼び出されることは 想定されていない。
notify_disconnect() 自体はテンプレートメソッドパターンとして、サ ブクラスで実装されることが前提の unsubscribeInterfaces() 関数を 内部で呼び出す。処理の手順は以下の通りである。
notify_disconnect() は ConnectorProfile::ports に格納されている Port の順序に従って、カスケード状に呼び出しを行うことにより、接 続の解除をすべての Port に通知する。
connector_id | ConnectorProfile の ID |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
protectedpure virtual |
Interface 情報を公開する
このオペレーションは、notify_connect() 処理シーケンスの始めにコール される純粋仮想関数である。 notify_connect() では、
の順に protected 関数がコールされ接続処理が行われる。
具象 Port ではこのオペレーションをオーバーライドし、引数として 与えられた ConnectorProfile に従い処理を行い、パラメータが不適切 であれば、RteurnCode_t 型のエラーコードを返す。 通常 publishInterafaces() 内においては、この Port に属する インターフェースに関する情報を ConnectorProfile に対して適切に設定し 他の Port に通知しなければならない。
また、この関数がコールされる段階では、他の Port の Interface に関する 情報はすべて含まれていないので、他の Port の Interface を取得する処理 は subscribeInterfaces() 内で行われるべきである。
このオペレーションは、新規の connector_id に対しては接続の生成、 既存の connector_id に対しては更新が適切に行われる必要がある。
connector_profile | 接続に関するプロファイル情報 |
RTC::CorbaPort, RTC::InPortBase, RTC::OutPortBaseで実装されています。
|
protectedvirtual |
接続の最大数を設定する。
limit_value | 最大数 |
void RTC::PortBase::setName | ( | const char * | name | ) |
Port の名前を設定する
Port の名前を設定する。この名前は Port が保持する PortProfile.name に反映される。
name | Port の名前 |
void RTC::PortBase::setOnConnected | ( | ConnectionCallback * | on_connected | ) |
接続完了時に呼ばれるコールバックをセットする
このオペレーションは、このポートが接続完了時に呼ばれる、コールバッ クファンクタをセットする。
コールバックファンクタの所有権は、呼び出し側にあり、オブジェクト が必要なくなった時に解体するのは呼び出し側の責任である。
このコールバックファンクタは、ポートの接続実行関数である notify_connect() の終了直前に、接続処理が正常終了する際に限って 呼び出されるコールバックである。接続処理の過程でエラーが発生した 場合には呼び出されない。
このコールバックファンクタは notify_connect() が out パラメータ として返すのと同じ引数 ConnectorProfile とともに呼び出されるので、 この接続において公開されたすべてのインターフェース情報を得ること ができる。このコールバックを利用して、notify_connect() が返す ConnectorProfile を変更することが可能であるが、接続関係の不整合 を招かないよう、ConnectorProfile の変更には注意を要する。
on_subscribe | ConnectionCallback のサブクラスオブジェクトのポインタ |
void RTC::PortBase::setOnConnectionLost | ( | ConnectionCallback * | on_connection_lost | ) |
ポートの接続がロストした場合に呼び出されるコールバックをセットする
このオペレーションは、このポートの接続がロストした場合に呼ばれる、 コールバックファンクタをセットする。
InPortは、相手側OutPortとの 接続をロストした場合、接続を強制的に切断するので、 引き続き OnDisconnect コールバックが呼び出される。
on_connection_lost | ConnectionCallback のサブクラスオブジェク トのポインタ |
void RTC::PortBase::setOnDisconnected | ( | ConnectionCallback * | on_disconnected | ) |
接続解除に呼ばれるコールバックをセットする
このオペレーションは、このポートの接続解除時に呼ばれる、コールバッ クファンクタをセットする。
コールバックファンクタの所有権は、呼び出し側にあり、オブジェクト が必要なくなった時に解体するのは呼び出し側の責任である。
このコールバックファンクタは、ポートの接続解除実行関数である notify_disconnect() の終了直前に、呼び出されるコールバックである。
このコールバックファンクタは接続に対応する ConnectorProfile とと もに呼び出される。この ConnectorProfile はこのファンクタ呼出し後 に破棄されるので、変更がほかに影響を与えることはない。
on_disconnected | ConnectionCallback のサブクラスオブジェク トのポインタ |
void RTC::PortBase::setOnPublishInterfaces | ( | ConnectionCallback * | on_publish | ) |
インターフェースを公開する際に呼ばれるコールバックをセットする
このオペレーションは、このポートが接続時に、ポート自身が持つサー ビスインターフェース情報を公開するタイミングで呼ばれるコールバッ クファンクタをセットする。
コールバックファンクタの所有権は、呼び出し側にあり、オブジェクト が必要なくなった時に解体するのは呼び出し側の責任である。
このコールバックファンクタは、PortBaseクラスの仮想関数である publishInterfaces() が呼ばれたあとに、同じ引数 ConnectorProfile と ともに呼び出される。このコールバックを利用して、 publishInterfaces() が公開した ConnectorProfile を変更することが可 能であるが、接続関係の不整合を招かないよう、ConnectorProfile の 変更には注意を要する。
on_publish | ConnectionCallback のサブクラスオブジェクトのポインタ |
void RTC::PortBase::setOnSubscribeInterfaces | ( | ConnectionCallback * | on_subscribe | ) |
インターフェースを取得する際に呼ばれるコールバックをセットする
このオペレーションは、このポートが接続時に、相手のポートが持つサー ビスインターフェース情報を取得するタイミングで呼ばれるコールバッ クファンクタをセットする。
コールバックファンクタの所有権は、呼び出し側にあり、オブジェクト が必要なくなった時に解体するのは呼び出し側の責任である。
このコールバックファンクタは、PortBaseクラスの仮想関数である subscribeInterfaces() が呼ばれる前に、同じ引数 ConnectorProfile と ともに呼び出される。このコールバックを利用して、 subscribeInterfaces() に与える ConnectorProfile を変更することが可 能であるが、接続関係の不整合を招かないよう、ConnectorProfile の 変更には注意を要する。
on_subscribe | ConnectionCallback のサブクラスオブジェクトのポインタ |
void RTC::PortBase::setOnUnsubscribeInterfaces | ( | ConnectionCallback * | on_unsubscribe | ) |
インターフェースを解放する際に呼ばれるコールバックをセットする
このオペレーションは、このポートが接続時に、相手のポートが持つサー ビスインターフェース情報を解放するタイミングで呼ばれるコールバッ クファンクタをセットする。
コールバックファンクタの所有権は、呼び出し側にあり、オブジェクト が必要なくなった時に解体するのは呼び出し側の責任である。
このコールバックファンクタは、PortBaseクラスの仮想関数である unsubscribeInterfaces() が呼ばれる前に、同じ引数 ConnectorProfile と ともに呼び出される。このコールバックを利用して、 unsubscribeInterfaces() に与える ConnectorProfile を変更することが可 能であるが、接続関係の不整合を招かないよう、ConnectorProfile の 変更には注意を要する。
on_unsubscribe | ConnectionCallback のサブクラスオブジェク トのポインタ |
void RTC::PortBase::setOwner | ( | RTObject_ptr | owner | ) |
Port の owner の RTObject を指定する
このオペレーションは Port の PortProfile.owner を設定する。
owner | この Port を所有する RTObject の参照 |
void RTC::PortBase::setPortConnectListenerHolder | ( | PortConnectListeners * | portconnListeners | ) |
PortConnectListeners のホルダをセットする
ポートの接続に関するリスナ群を保持するホルダクラスへのポインタを セットする。この関数は通常親のRTObjectから呼ばれ、RTObjectが持つ ホルダクラスへのポインタがセットされる。
portconnListeners | PortConnectListeners オブジェクトのポインタ |
void RTC::PortBase::setPortRef | ( | PortService_ptr | port_ref | ) |
Port のオブジェクト参照を設定する
このオペレーションは Port の PortProfile にこの Port 自身の オブジェクト参照を設定する。
port_ref | この Port のオブジェクト参照 |
|
staticprotected |
UUIDを生成し ConnectorProfile にセットする
このオペレーションは UUID を生成し、ConnectorProfile にセットする。
connector_profile | connector_id をセットする ConnectorProfile |
|
protectedpure virtual |
Interface 情報を公開する
このオペレーションは、notify_connect() 処理シーケンスの中間にコール される純粋仮想関数である。 notify_connect() では、
の順に protected 関数がコールされ接続処理が行われる。
具象 Port ではこのオペレーションをオーバーライドし、引数として 与えられた ConnectorProfile に従い処理を行い、パラメータが不適切 であれば、RteurnCode_t 型のエラーコードを返す。 引数 ConnectorProfile には他の Port の Interface に関する情報が 全て含まれている。 通常 subscribeInterafaces() 内においては、この Port が使用する Interface に関する情報を取得し、要求側のインターフェースに対して 情報を設定しなければならない。
このオペレーションは、新規の connector_id に対しては接続の生成、 既存の connector_id に対しては更新が適切に行われる必要がある。
connector_profile | 接続に関するプロファイル情報 |
RTC::CorbaPort, RTC::InPortBase, RTC::OutPortBaseで実装されています。
|
protectedpure virtual |
Interface の接続を解除する
このオペレーションは、notify_disconnect() 処理シーケンスの終わりにコール される純粋仮想関数である。 notify_disconnect() では、
connector_profile | 接続に関するプロファイル情報 |
RTC::CorbaPort, RTC::InPortBase, RTC::OutPortBaseで実装されています。
|
protected |
ConnectorProfile の追加もしくは更新
このオペレーションは与えられた ConnectorProfile を Port に追加もしくは 更新保存する。 与えられた ConnectorProfile の connector_id と同じ ID を持つ ConnectorProfile がリストになければ、リストに追加し、 同じ ID が存在すれば ConnectorProfile を上書き保存する。
connector_profile | 追加もしくは更新する ConnectorProfile |
|
protected |
存在しないポートをdisconnectする。
死んだPortを検出し、もし死んでいるポートがあった場合には、接続を 解除する。
|
protected |
Port の接続の最大数
|
mutableprotected |
|
protected |
|
protected |
Port の オブジェクト参照
|
protected |
Callback functor オブジェクト
接続完了時に呼ばれるコールバックオブジェクト
|
protected |
|
protected |
Callback functor オブジェクト
接続解除に呼ばれるコールバックオブジェクト
|
protected |
Callback functor オブジェクト
インターフェースを公開する際に呼ばれるコールバックオブジェクト
|
protected |
Callback functor オブジェクト
インターフェースを取得する際に呼ばれるコールバックオブジェクト
|
protected |
Callback functor オブジェクト
インターフェースを解放する際に呼ばれるコールバックオブジェクト
|
protected |
インスタンス名
|
protected |
PortConnectListenerホルダ
PortConnectListenrを保持するホルダ
参照元 onConnected(), onConnectNextport(), onDisconnected(), onDisconnectNextport(), onNotifyConnect(), onNotifyDisconnect(), onPublishInterfaces(), onSubscribeInterfaces(), onUnsubscribeInterfaces().
|
protected |
Port の PortProfile
|
mutableprotected |
PortProfile の mutex
|
protected |
プロパティ
|
mutableprotected |
ロガーストリーム