OpenRTM-aist-Python 1.1.2
クラス | 公開メンバ関数 | 全メンバ一覧
OpenRTM_aist.CorbaPort.CorbaPort クラス

RT コンポーネント CORBA provider/consumer 用 Port. [詳解]

OpenRTM_aist.CorbaPort.CorbaPort の継承関係図
OpenRTM_aist.PortBase.PortBase

クラス

class  CorbaConsumerHolder
 Consumer の情報を格納する構造体 [詳解]
 
class  CorbaProviderHolder
 Provider の情報を格納する構造体 [詳解]
 
class  subscribe
 ConnectorProfile と Consuemr の比較をしオブジェクト参照を セットするための Functor. [詳解]
 
class  unsubscribe
 Consumer のオブジェクトを解放するための Functor. [詳解]
 

公開メンバ関数

def __init__ (self, name)
 コンストラクタ [詳解]
 
def init (self, prop)
 プロパティの初期化 [詳解]
 
def registerProvider (self, instance_name, type_name, provider)
 Provider を登録する [詳解]
 
def registerConsumer (self, instance_name, type_name, consumer)
 Consumer を登録する [詳解]
 
def activateInterfaces (self)
 Port の全てのインターフェースを activates する [詳解]
 
def deactivateInterfaces (self)
 全ての Port のインターフェースを deactivates する [詳解]
 
def publishInterfaces (self, connector_profile)
 Provider Interface 情報を公開する [詳解]
 
def subscribeInterfaces (self, connector_profile)
 Provider Interface 情報を取得する [詳解]
 
def unsubscribeInterfaces (self, connector_profile)
 Interface への接続を解除する [詳解]
 
def findProvider (self, nv, cons, iorstr)
 Consumer に合致する Provider を NVList の中から見つける [詳解]
 
def findProviderOld (self, nv, cons, iorstr)
 Consumer に合致する Provider を NVList の中から見つける [詳解]
 
def setObject (self, ior, cons)
 Consumer に IOR をセットする [詳解]
 
def releaseObject (self, ior, cons)
 Consumer のオブジェクトをリリースする [詳解]
 
- 基底クラス OpenRTM_aist.PortBase.PortBase に属する継承公開メンバ関数
def __init__ (self, name=None)
 コンストラクタ [詳解]
 
def __del__ (self)
 デストラクタ [詳解]
 
def get_port_profile (self)
 [CORBA interface] PortProfileを取得する [詳解]
 
def getPortProfile (self)
 PortProfile を取得する。 [詳解]
 
def get_connector_profiles (self)
 [CORBA interface] ConnectorProfileListを取得する [詳解]
 
def get_connector_profile (self, connector_id)
 [CORBA interface] ConnectorProfile を取得する [詳解]
 
def connect (self, connector_profile)
 [CORBA interface] Port の接続を行う [詳解]
 
def notify_connect (self, connector_profile)
 [CORBA interface] Port の接続通知を行う [詳解]
 
def disconnect (self, connector_id)
 [CORBA interface] Port の接続を解除する [詳解]
 
def notify_disconnect (self, connector_id)
 [CORBA interface] Port の接続解除通知を行う [詳解]
 
def disconnect_all (self)
 [CORBA interface] Port の全接続を解除する [詳解]
 
def setName (self, name)
 Port の名前を設定する [詳解]
 
def getName (self)
 Port の名前を取得するconst char* PortBase::getName() const.
 
def getProfile (self)
 PortProfileを取得する [詳解]
 
def setPortRef (self, port_ref)
 Port のオブジェクト参照を設定する [詳解]
 
def getPortRef (self)
 Port のオブジェクト参照を取得する [詳解]
 
def setOwner (self, owner)
 Port の owner の RTObject を指定する [詳解]
 
def setOnPublishInterfaces (self, on_publish)
 インターフェースを公開する際に呼ばれるコールバックをセットする [詳解]
 
def setOnSubscribeInterfaces (self, on_subscribe)
 インターフェースを取得する際に呼ばれるコールバックをセットする [詳解]
 
def setOnConnected (self, on_connected)
 接続完了時に呼ばれるコールバックをセットする [詳解]
 
def setOnUnsubscribeInterfaces (self, on_subscribe)
 インターフェースを解放する際に呼ばれるコールバックをセットする [詳解]
 
def setOnDisconnected (self, on_disconnected)
 接続解除に呼ばれるコールバックをセットする [詳解]
 
def setPortConnectListenerHolder (self, portconnListeners)
 PortConnectListeners のホルダをセットする [詳解]
 
def publishInterfaces (self, connector_profile)
 Interface 情報を公開する(サブクラス実装用) [詳解]
 
def connectNext (self, connector_profile)
 次の Port に対して notify_connect() をコールする [詳解]
 
def disconnectNext (self, connector_profile)
 次の Port に対して notify_disconnect() をコールする [詳解]
 
def subscribeInterfaces (self, connector_profile)
 Interface 情報を取得する(サブクラス実装用) [詳解]
 
def unsubscribeInterfaces (self, connector_profile)
 Interface の接続を解除する(サブクラス実装用) [詳解]
 
def setConnectionLimit (self, limit_value)
 接続の最大数を設定する。 [詳解]
 
def isEmptyId (self, connector_profile)
 ConnectorProfile の connector_id フィールドが空かどうか判定 [詳解]
 
def getUUID (self)
 UUIDを生成する [詳解]
 
def setUUID (self, connector_profile)
 UUIDを生成し ConnectorProfile にセットする [詳解]
 
def isExistingConnId (self, id_)
 id が既存の ConnectorProfile のものかどうか判定する [詳解]
 
def findConnProfile (self, id_)
 id を持つ ConnectorProfile を探す [詳解]
 
def findConnProfileIndex (self, id_)
 id を持つ ConnectorProfile を探す [詳解]
 
def updateConnectorProfile (self, connector_profile)
 ConnectorProfile の追加もしくは更新 [詳解]
 
def eraseConnectorProfile (self, id_)
 ConnectorProfile を削除する [詳解]
 
def appendInterface (self, instance_name, type_name, pol)
 PortInterfaceProfile に インターフェースを登録する [詳解]
 
def deleteInterface (self, name, pol)
 PortInterfaceProfile からインターフェース登録を削除する [詳解]
 
def addProperty (self, key, value)
 PortProfile の properties に NameValue 値を追加する [詳解]
 
def appendProperty (self, key, value)
 PortProfile の properties に NameValue 値を要素に追加する [詳解]
 
def updateConnectors (self)
 存在しないポートをdisconnectする。 [詳解]
 
def checkPorts (self, ports)
 ポートの存在を確認する。 [詳解]
 

詳解

RT コンポーネント CORBA provider/consumer 用 Port.

CorbaPort は RT コンポーネントにおいて、ユーザ定義の CORBA オブジェ クトサービスおよびコンシューマを提供する Port 実装である。

RT コンポーネントは、Port を介してユーザが定義した CORBA サービス を提供することができ、これを RT Service (Provider) と呼ぶ。また、 他の RT コンポーネントのサービスを利用するための CORBA オブジェク トのプレースホルダを提供することができ、これを RT Service Consumer と呼ぶ。 CorbaPort は任意の数の Provider および Consumer を管理することがで き、Port 同士を接続する際に対応する Provider と Consumer を適切に 関連付けることができる。 CorbaPort は通常以下のように利用される。

 RTC::CorbaPort m_port0; // Port の宣言
 MyService_impl m_mysvc0; // この Port が提供する Serivce Provider
 RTC::CorbaConsumer<YourService> m_cons0; // この Port の Consumer
 // Service Provider を Port に登録
 m_port0.registerProvider("MyService0", "Generic", m_mysvc0);
 // Service Consumer を Port に登録
 m_port0.registerConsumer("YourService0", "Generic", m_cons0 );
 // connect が行われた後
 m_cons0->your_service_function(); // YourService の関数をコール
 // connect された 別のコンポーネントにおいて
 m_cons1->my_service_function(); // MyService の関数をコール
 

このように、提供したい Service Provider を registerProvider() で登 録することにより、他のコンポーネントから利用可能にし、他方、利用し たい Service Consumer を registerConsumer() で登録することにより他 のコンポーネントの Service をコンポーネント内で利用可能にすること ができる。

PortInterfaceProfile は Port に所属するプロバイダもしくはコンシュー マインターフェースについての情報を記述するためのプロファイルである。 接続を行うツール等は、これらの情報に基づき ConnectorProfile を適切 に生成し、接続を構成する Port のうち任意の一つに対して引数に ConnectorProfile を与えて Port::connect() を呼び出す必要がある。

なお、PortInterfaceProfile のインスタンス名 "#" は特殊なインスタン スを表す。

PROVIDEDすなわちプロバイダのインスタンス名が "#" の場合は、接続開 始時点ではインスタンスが存在せず、コンシューマの要求に応じて動的に インスタンスを生成するタイプのプロバイダであることを表す。したがっ て、接続開始時点ではインスタンス名は存在しないが、接続シーケンス中 のインターフェースを公開するプロセスにおいて、プロバイダは生成した インスタンスに対応した記述子を ConnectorProfile に適正に設定するも のとする。(未実装)

REQUIREDすなわちコンシューマのインスタンス名が "#" の場合は、一つ のコンシューマが複数のプロバイダと接続可能なタイプのコンシューマで あることを示す。(未実装)

以下は、Port間のインターフェースを接続するために ConnectorProfile に マッピングを記述するためのルールを示す。

Portに付属するインターフェースの指定子のフォーマットを以下のように 定める。インターフェースに関するプロパティが以下の場合

インターフェースの指定子を以下の文字列名称で指定するものとする。

<rtc_iname>.port.<port_name>.<if_polarity>.<if_tname>.<if_iname>

PROVIDED(提供)型すなわちプロバイダのインタフェースのプロパティが以 下の場合、

インターフェース指定子は

MyComp0.port.myservice.provided.echo_interface.echo_interface2

のように記述される。また、同様にREQUIRED(要求)型すなわちコンシュー マのインターフェースのプロパティが以下の場合、

インターフェース指定子は、

YourComp0.port.myservice.required.hoge_interface.hoge_inteface1

のように記述することができる。

なお、ここで動的生成インターフェースのインスタンスのための特殊なタ イプのインスタンス名記述子

を定義する。動的生成インターフェースとは、接続時にインスタンスが生 成されるタイプのインターフェースである。(未実装)

コンシューマが要求するプロバイダインターフェース記述子に動的生成型 インスタンス名記述子 "<type_name>#" が指定された場合、プロバイダは インスタンスを1つ新規に生成する。"<type_name>#" の記述子によりプロバ イダを要求する n 個のコンシューマが存在する場合、これらからの要求 (オペレーションコール)を1 つのプロバイダにより処理する関係を構築す る(下図)。

 consumer0 ]---<
 consumer1 ]---<  O----[ provider0
 consumer2 ]---<
 

これに対し、コンシューマが要求するプロバイダインターフェース記述子 にインクリメンタル生成型インスタンス名記述子 "<type_name>+" が指定 された場合、記述子 "<type_name>+" の数だけプロバイダのインスタン スが動的に生成される。すなわち、"<type_name>+" の記述子によりプロバ イダを要求する n 個のコンシューマが存在する場合、n 個のプロバイダ がそれぞれの要求を処理する以下のような関係が構築される。

 consumer0 ]---<  O----[ provider0
 consumer1 ]---<  O----[ provider1
 consumer2 ]---<  O----[ provider2
 

接続に際して、ツール等から ConnectorProfile::properties に適切なイ ンターフェースマッピング指定を記述することで、相互のプロバイダ/コ ンシューマインターフェースを自由に接続することができる。ただし、接 続に関わる RTC の中に、異なるインスタンスでありながら、同一のインス タンス名が存在する場合、インターフェース記述子の一意性が保証できな いので、この方法による接続性は保証されない。

ここでインターフェース記述子を簡単のために <if_desc0>, <if_desc1>, ... とする。また、ConnectorProfile::properties の NVListの key と value を key: value のように記述するものとする。

いま、2つのコンポーネントのサービスポートを接続する場合を考える。 それぞれのコンポーネントのサービスポートが以下の場合、

      MyComp0                                 YourComp0
     _______ mycomp_service   yourcomp_service ______
            |                                 |
          |~~~|---O echo0         echo9 >---|~~~|
          |   |---< add0          add9  O---|   |
           ~T~                               ~T~
            |                                 |
 

MyComp0 の echo0 (プロバイダ) と YourComp0 の echo9 (コンシューマ)、 MyComp0 の add0 (コンシューマ) と YourComp0 の add9 (プロバイダ) をそれぞれ対にして接続させるものと仮定する。この場合、 ConnectorProfile は以下のように設定する。

 ConnectorProfile:
   name: 任意のコネクタ名
   connector_id: 空文字
   ports[]: mycomp_service の参照, yourcomp_service の参照
   properties:
     <add0>: <add9>
     <echo9>: <echo0>
 

ただし、それぞれ

 <add0> は MyComp0.port.mycomp_service.required.add.add0
 <add9> は YourComp0.port.yourcomp_service.provided.add.add9
 <echo0> は MyComp0.port.mycomp_service.provided.echo.echo0
 <echo9> は YourComp0.port.yourcomp_service.required.echo.echo9
 

である。接続プロセスにおいて、各ポートのプロバイダおよびコンシュー マは、それぞれ以下の作業を、CorbaPort::publishInterfaces(), CorbaPort::subscribeInterfaces() 仮想関数において行う。

プロバイダは、publishInterfaces() 関数において、自分のインターフェー ス記述子をキーとし、値にIORの文字列表記したものを ConnectorProfile::properties に設定する。前提として、このインター フェース記述子は今行おうとしているコネクタにおいては一意であるため、 同じキーは1つしか存在してはいけない。

[この部分の記述は未実装の機能] なお、動的生成インターフェースにつ いては、以下の手続きに従い処理することとなる。publishInterface() 関数において、動的生成インスタンス名記述子 "<type_name>*" または、 インクリメンタル生成型インスタンス名記述子 "<type_name>+" が存在す るかどうかを走査する。動的生成インスタンス名記述子 "<type_name>*" が存在する場合、プロバイダのインスタンスを1つ生成し、そのインター フェース指定子を key に、IOR文字列を value に設定するとともに、動 的生成インスタンス名記述子 "<type_name>*" を value に含むすべての value 上のインターフェース指定子を、ここで生成したインターフェース 指定子に置き換える。

インクリメンタル生成型インスタンス名記述子"<type_name>+" が存在す る場合、インスタンス名記述子の数だけプロバイダのインスタンスを生成 し、それぞれのインターフェース指定子をkey に、IOR文字列を value に 設定するとともに、インクリメンタル生成型インスタンス名記述子 "<type_name>+" を value 含むすべての value 上のインターフェース指 定子に対して順に、ここで生成したそれぞれのインターフェース指定子に 置き換える。

プロバイダは subscribeInterfaces() では特に操作は行わない。

コンシューマは、 publishInterfaces() においては特に操作を行わない。

一方、 subscribeInterfaces() では、自分の記述子を key とする key-value ペア が存在するかどうか調べ、もし存在すれば、その value に設定されたプロバイダのインターフェース指定子で指定される参照を、 さらに ConnectorProfile::properties から探し、それをコンシューマの 接続先として設定する。なお、意図的にコンシューマにプロバイダの参照 を設定しない場合は、予約文字列 "nil" または "null" を設定するもの とする。

コンシューマは、もし自分の記述子が存在しない場合、またはプロバイダ の参照が Connector::properties に存在しない場合、コンシューマは、 自分のインスタンス名および型名と同一のプロバイダを探し、その参照を 自分自身に設定する。これは、OpenRTM-aist-0.4 との互換性を保持する ためのルールであり、1.0以降では推奨されない。

プロバイダ対コンシューマの対応は一対一である必要はなく、プロバイダ 1 に対して、コンシューマ n、またはコンシューマ 1 に対してプロバイ ダ n のケースも許される。プロバイダ 1 に対して、コンシューマ n の ケースでは、あるプロバイダの指定子が、複数のコンシューマに対して、 上記の方法で指定されることにより、実現される。一方、コンシューマ 1 に対してプロバイダ n のケースでは、コンシューマ指定子の key に対 して、複数のプロバイダの指定子がカンマ区切りで列挙される形式となる ものとする。

なお、インターフェースの対応関係の厳密さを指定するオプションとして、 以下のオプションを指定することができる。

port.connection.strictness: strict, best_effort

strict: すべてのコンシューマに指定した参照が存在し、かつナローイン グにも成功しコンシューマに適切にセットできた場合にのみ Port 間の接続を確立する。

best_effort: ナローイング等に失敗した場合でも、エラーを返すことな く Port 間の接続を確立する。

から
0.4.0

構築子と解体子

def OpenRTM_aist.CorbaPort.CorbaPort.__init__ (   self,
  name 
)

コンストラクタ

引数
self
namePort の名前

メソッド詳解

def OpenRTM_aist.CorbaPort.CorbaPort.activateInterfaces (   self)

Port の全てのインターフェースを activates する

Port に登録されている全てのインターフェースを activate する。

void CorbaPort::activateInterfaces()

def OpenRTM_aist.CorbaPort.CorbaPort.deactivateInterfaces (   self)

全ての Port のインターフェースを deactivates する

Port に登録されている全てのインターフェースを deactivate する。

void CorbaPort::deactivateInterfaces()

def OpenRTM_aist.CorbaPort.CorbaPort.findProvider (   self,
  nv,
  cons,
  iorstr 
)

Consumer に合致する Provider を NVList の中から見つける

NVList 中から CorbaConsumerHolder に保持されている Consumer に合 致するキーを持つ Provider を見つけ、IOR を抽出しナローイングして Consumer にセットする。対応するキーが存在しない、IOR が見つから ない、ナローイングに失敗した場合、false を返す。

引数
nvProvider が含まれている ConnectorProfile::properties の NVList
consProvider と対応する Consumer のホルダ

bool Consumer に対応する Provider が見つからない場合 false

virtual bool findProvider(const NVList& nv, CorbaConsumerHolder& cons, std::string& iorstr);

def OpenRTM_aist.CorbaPort.CorbaPort.findProviderOld (   self,
  nv,
  cons,
  iorstr 
)

Consumer に合致する Provider を NVList の中から見つける

この関数は、古いバージョンの互換性のための関数である。

NVList 中から CorbaConsumerHolder に保持されている Consumer に合 致するキーを持つ Provider を見つける。対応するキーが存在しない、 IOR が見つからない場合、false を返す

引数
nvProvider が含まれている ConnectorProfile::properties の NVList
consProvider と対応する Consumer のホルダ
iorstr見つかったIOR文字列を格納する変数

bool Consumer に対応する Provider が見つからない場合 false

virtual bool findProviderOld(const NVList&nv, CorbaConsumerHolder& cons, std::string& iorstr);

def OpenRTM_aist.CorbaPort.CorbaPort.init (   self,
  prop 
)

プロパティの初期化

OutPortのプロパティを初期化する。このポートへの接続数を指定する プロパティ "connection_limit" が含まれ、適切な数値が設定されてい る場合、最大接続数としてその数値が設定される。プロパティが設定さ れていない場合、もしくは適切な値が設定されていない場合には、最大 接続数は無制限となる。

引数
propCorbaPort のプロパティ

void init(coil::Properties& prop);

def OpenRTM_aist.CorbaPort.CorbaPort.publishInterfaces (   self,
  connector_profile 
)

Provider Interface 情報を公開する

この Port が所有する Provider インターフェースに関する情報を ConnectorProfile::properties に代入し他の Port に対して公開する。 今、RTCのインスタンス名等の情報が以下の通りであるとして、

  • RTCインスタンス名: rtc_iname
  • ポート名: port_name
  • インターフェース極性: if_polarity
  • インターフェース型名: if_tname
  • インターフェースインスタンス名: if_iname

NameValue 型の ConnectorProfile::properties の name と value として 以下のものが格納される。

  • name <rtc_iname>.port.<port_name>.provided.<if_tname>.<if_iname>
  • value Provider インターフェースの IOR 文字列

なお、旧バージョンとの互換性のため以下の表記の NameValue も同時 に格納されるが、将来のバージョンでは削除される可能性がある。

  • name port.<if_tname>.<if_iname>
  • value Provider インターフェースの IOR 文字列

これらの値は ConnectorProfile::properties に格納され、他のポートに対して 伝達される。他の Port でこのインターフェースを使用する Consumer が 存在すれば、ConnectorProfile からこのキーからオブジェクトリファレンスを 取得し何らかの形で使用される。

引数
connector_profileコネクタプロファイル
戻り値
ReturnCode_t 型のリターンコード

virtual ReturnCode_t publishInterfaces(ConnectorProfile& connector_profile);

def OpenRTM_aist.CorbaPort.CorbaPort.registerConsumer (   self,
  instance_name,
  type_name,
  consumer 
)

Consumer を登録する

この Port が要求するサービスのプレースホルダであるコンシューマ (Consumer) を登録する。Consumer が関連付けられるサービスのインス タンス名およびタイプ名として、引数に instance_name, type_name お よび Consumer 自身を与えることにより、内部でこれらが関連付けられ る。Port 間の接続 (connect) 時 には、subscribeInterfaces() で述 べられているルールに基づき、Provider Interface の参照が自動的に Consumer にセットされる。

引数
instance_nameConsumer が要求するサービスのインスタンス名
type_nameConsumer が要求するサービスのタイプ名
consumerCORBA サービスコンシューマ
戻り値
既に同名の instance_name が登録されていれば false を返す。

bool registerConsumer(const char* instance_name, const char* type_name, CorbaConsumerBase& consumer);

def OpenRTM_aist.CorbaPort.CorbaPort.registerProvider (   self,
  instance_name,
  type_name,
  provider 
)

Provider を登録する

この Port において提供したいサーバントをこの Port に対して登録す る。サーバントは、引数で与えられる instance_name, type_name を、 サーバント自身のインスタンス名およびタイプ名として、サーバントに 関連付けられる。この関数により、サーバントは CorbaPort 内部に保 持されるとともに、PortInterfaceProfile にRTC::PROVIDED インター フェースとして登録される。

引数
instance_nameサーバントのインスタンス名
type_nameサーバントのタイプ名
providerCORBA サーバント
戻り値
既に同名の instance_name が登録されていれば false を返す。

bool registerProvider(const char* instance_name, const char* type_name, PortableServer::RefCountServantBase& provider);

def OpenRTM_aist.CorbaPort.CorbaPort.releaseObject (   self,
  ior,
  cons 
)

Consumer のオブジェクトをリリースする

Consumer にセットされた参照をリリースする。ConsumerのIORが与えら れたIOR文字列と異なる場合、falseを返す。

引数
iorセットする IOR 文字列
consConsumer のホルダ

ConsumerのIORが与えられたIOR文字列と異なる場合、falseを返す。

bool releaseObject(const std::string& ior, CorbaConsumerHolder& cons);

def OpenRTM_aist.CorbaPort.CorbaPort.setObject (   self,
  ior,
  cons 
)

Consumer に IOR をセットする

IOR をナローイングしてConsumer にセットする。ナローイングに失敗 した場合、false を返す。ただし、IOR文字列が、nullまたはnilの場合、 オブジェクトに何もセットせずに true を返す。

引数
iorセットする IOR 文字列
consConsumer のホルダ

bool Consumer へのナローイングに失敗した場合 false

bool setObject(const std::string& ior, CorbaConsumerHolder& cons);

def OpenRTM_aist.CorbaPort.CorbaPort.subscribeInterfaces (   self,
  connector_profile 
)

Provider Interface 情報を取得する

この Portが所有する Consumer Interface に適合する Provider Interface に関する情報をConnectorProfile::properties から抽出し Consumer Interface にオブジェクト参照をセットする。

今、RTC のインスタンス名や Consumer Interface 等の情報が以下のと おりであると仮定すると、

  • RTCインスタンス名: rtc_iname
  • ポート名: port_name
  • インターフェース極性: if_polarity
  • インターフェース型名: if_tname
  • インターフェースインスタンス名: if_iname

この Consumer Interface を表すインターフェース指定子は以下のよう に表される。

<rtc_iname>.port.<port_name>.required.<if_tname>.<if_iname>

この関数は、まず引数 ConnectorProfile::properties に上記インター フェース指定子をキーとして格納されている Provider Interface 指定 子を探し出す。さらに、その Provider Interface 指定子をキーとして 格納されている Provider Interface の参照を表す IOR 文字列を取得 し、Consumer Interface にセットする。

今、仮に、Provider を prov(n), その参照をIOR(n) さらに Consumer をcons(n) のように記述し、これらすべてのインターフェースの型が同 一であり、ConnectorProfile に以下の値が設定されているとする。

 ConnectorProfile::properties =
 {
   prov0: IOR0,
   prov1: IOR1,
   prov2: IOR2,
   cons0: prov2,
   cons1: prov1,
   cons2: prov0
 }
 

このとき、cons(0..2) にはそれぞれ、参照が以下のようにセットされる。

   cons0 = IOR2
   cons1 = IOR1
   cons2 = IOR0
 

なお、旧バージョンとの互換性のため、 ConnectorProfile::properties に Consumer Interface をキーとした 値がセットされていない場合でも、次のルールが適用される。

今、仮に Consumer Interface が

  PortInterfaceProfile
  {
    instance_name = "PA10_0";
    type_name     = "Manipulator";
    polarity      = REQUIRED;
  }
 

として登録されていれば、他の Port の

  PortInterfaceProfile
  {
    instance_name = "PA10_0";
    type_name     = "Manipulator";
    polarity      = PROVIDED;
  }
 

として登録されている Serivce Provider のオブジェクト参照を探し、 Consumer にセットする。実際には、ConnectorProfile::properties に

 NameValue = { "port.Manipulator.PA10_0": <Object reference>=""> }
 

として登録されている NameValue を探し、そのオブジェクト参照を Consumer にセットする。

引数
connector_profileコネクタプロファイル
戻り値
ReturnCode_t 型のリターンコード

virtual ReturnCode_t subscribeInterfaces(const ConnectorProfile& connector_profile);

def OpenRTM_aist.CorbaPort.CorbaPort.unsubscribeInterfaces (   self,
  connector_profile 
)

Interface への接続を解除する

与えられた ConnectorProfile に関連する Consumer にセットされた すべての Object を解放し接続を解除する。

引数
self
connector_profileコネクタプロファイル

virtual void unsubscribeInterfaces(const ConnectorProfile& connector_profile);


このクラス詳解は次のファイルから抽出されました: