OpenRTM-aist-Python 2.0.2
OpenRTM_aist.OutPortBase.OutPortBase クラス

[詳解]

OpenRTM_aist.OutPortBase.OutPortBase の継承関係図
OpenRTM_aist.PortBase.PortBase OpenRTM_aist.DataPortStatus.DataPortStatus OpenRTM_aist.CSPOutPort.CSPOutPort OpenRTM_aist.OutPort.OutPort

クラス

class  connector_cleanup
 

公開メンバ関数

 __init__ (self, name, data_type)
 
 __del__ (self, PortBase=OpenRTM_aist.PortBase)
 
 init (self, prop)
 
 write (self)
 
 connect (self, connector_profile)
 
 notify_connect (self, connector_profile)
 
 properties (self)
 
 connectors (self)
 
 getConnectorProfiles (self)
 
 getConnectorIds (self)
 
 getConnectorNames (self)
 
 getConnectorById (self, id)
 
 getConnectorByName (self, name)
 
 getConnectorProfileById (self, id)
 
 getConnectorProfileByName (self, name)
 
 activateInterfaces (self)
 
 deactivateInterfaces (self)
 
 addConnectorDataListener (self, listener_type, listener)
 
 removeConnectorDataListener (self, listener_type, listener)
 
 addConnectorListener (self, callback_type, listener)
 
 removeConnectorListener (self, callback_type, listener)
 
 configure (self)
 
 publishInterfaces (self, cprof)
 
 subscribeInterfaces (self, cprof)
 
 unsubscribeInterfaces (self, connector_profile)
 
 initProviders (self)
 
 initConsumers (self)
 
 createProvider (self, cprof, prop)
 
 createConsumer (self, cprof, prop)
 
 createConnector (self, cprof, prop, provider_=None, consumer_=None)
 
 createDuplexConnector (self, cprof, prop, provider_)
 
 getLocalInPort (self, profile)
 
- 基底クラス OpenRTM_aist.PortBase.PortBase に属する継承公開メンバ関数
 exit (self)
 
 get_port_profile (self)
 
 getPortProfile (self)
 
 get_connector_profiles (self)
 
 get_connector_profile (self, connector_id)
 
 disconnect (self, connector_id)
 
 notify_disconnect (self, connector_id)
 
 disconnect_all (self)
 
 setName (self, name)
 
 getName (self)
 
 getProfile (self)
 
 setPortRef (self, port_ref)
 
 getPortRef (self)
 
 setOwner (self, owner)
 
 setOnPublishInterfaces (self, on_publish)
 
 setOnSubscribeInterfaces (self, on_subscribe)
 
 setOnConnected (self, on_connected)
 
 setOnUnsubscribeInterfaces (self, on_subscribe)
 
 setOnDisconnected (self, on_disconnected)
 
 setPortConnectListenerHolder (self, portconnListeners)
 
 connectNext (self, connector_profile)
 
 disconnectNext (self, connector_profile)
 
 setConnectionLimit (self, limit_value)
 
 isEmptyId (self, connector_profile)
 
 getUUID (self)
 
 setUUID (self, connector_profile)
 
 isExistingConnId (self, id_)
 
 findConnProfile (self, id_)
 
 findConnProfileIndex (self, id_)
 
 updateConnectorProfile (self, connector_profile)
 
 eraseConnectorProfile (self, id_)
 
 appendInterface (self, instance_name, type_name, pol)
 
 deleteInterface (self, name, pol)
 
 addProperty (self, key, value)
 
 appendProperty (self, key, value)
 
 updateConnectors (self)
 
 checkPorts (self, ports)
 
 isExistingMarshalingType (self, con_prop)
 
- 基底クラス OpenRTM_aist.DataPortStatus.DataPortStatus に属する継承公開メンバ関数
 toString (status)
 

その他の継承メンバ

- 基底クラス OpenRTM_aist.DataPortStatus.DataPortStatus に属する継承静的公開変数類
int PORT_OK = 0
 brief DataPortStatus リターンコード
 
- 基底クラス OpenRTM_aist.PortBase.PortBase に属する継承限定公開メンバ関数
 _publishInterfaces (self)
 

詳解

OutPort 基底クラス

OutPort の基底クラス。

Properties: port.outport プロパティは

  • port.outport
  • port.outport.[name] ConnectorProfile.properties の場合は
  • dataport.outport

以下に指定したものが渡される。 (port.outport.[name]が優先される) さらに、一部のプロパティは接続時に ConnectorProfile により 渡される場合があり、その場合は ConnectorProfile が優先される。

  • input.throughput.profile: enable
  • input.throughput.update_rate: count [n/count]
  • input.throughput.total_bytes: [bytes]
  • input.throughput.total_count: [n]
  • input.throughput.max_size: [bytes]
  • input.throughput.min_size: [bytes]
  • input.throughput.avg_size: [bytes]
  • input.throughput.byte_sec: [bytes/sec]
  • output.throughput.profile: enable
  • output.throughput.update_rate: count [n/count]
  • output.throughput.total_bytes: [bytes]
  • output.throughput.total_count:[n]
  • output.throughput.max_size: [bytes]
  • output.throughput.min_size: [bytes]
  • output.throughput.avg_size: [bytes]
  • output.throughput.max_sendtime: [sec]
  • output.throughput.min_sendtime: [sec]
  • output.throughput.avg_sendtime: [sec]
  • output.throughput.byte_sec: [bytes/sec]

dataport.dataflow_type dataport.interface_type dataport.subscription_type

[buffer]

  • buffer.type: 利用可能なバッファのタイプ ConnectorProfile の場合は利用するバッファのタイプ 無指定の場合はデフォルトの ringbuffer が使用される。 ex. ringbuffer, shmbuffer, doublebuffer, etc. 正し、Consumer, Publisher のタイプによっては特定のバッファ型を 要求するがあるための、その場合は指定は無効となる。
  • buffer.length: バッファの長さ
  • buffer.write.full_policy: 上書きするかどうかのポリシー overwrite (上書き), do_nothing (何もしない), block (ブロックする) block を指定した場合、次の timeout 値を指定すれば、指定時間後 書き込み不可能であればタイムアウトする。
  • buffer.write.timeout: タイムアウト時間を [sec] で指定する。 1 sec -> 1.0, 1 ms -> 0.001, タイムアウトしない -> 0.0
  • buffer.read.empty_policy: バッファが空のときの読み出しポリシー last (最後の要素), do_nothing (何もしない), block (ブロックする) block を指定した場合、次の timeout 値を指定すれば、指定時間後 読み出し不可能であればタイムアウトする。
  • buffer.read.timeout: タイムアウト時間 [sec] で指定する。 1sec -> 1.0, 1ms -> 0.001, タイムアウトしない -> 0.0
  • その他バッファ毎に固有なオプション

[publihser]

  • publisher.types: 利用可能な Publisher のタイプ new, periodic, flush, etc..
  • publisher.push.policy: InPortへデータを送信するポリシー all: バッファにたまっているすべて送信 fifo: バッファをFIFOとみなして送信 skip: 古いデータから一定数を間引いて送信 new: 常に新しいデータのみを送信
  • publisher.push.skip_rate: push.policy=skip のときのスキップ率 n: n要素毎にひとつ送信
  • publisher.periodic.rate:
  • publisher.thread.type: Publisher のスレッドのタイプ
  • publisher.thread.measurement.exec_time: yes/no
  • publisher.thread.measurement.exec_count: number
  • publisher.thread.measurement.period_time: yes/no
  • publisher.thread.measurement.period_count: number

[interface]

  • interface.types: OutPort interfaceのタイプ ex. corba_cdr, corba_any, raw_tcp などカンマ区切りで指定。何も 指定しなければ利用可能なすべてのプロバイダが使用される

OutPort 側の connect() では以下のシーケンスで処理が行われる。

  1. OutPort に関連する connector 情報の生成およびセット
  2. InPortに関連する connector 情報の取得
    • ConnectorProfile.properties["dataport.corba_any.inport_ref"]に OutPortAny のオブジェクトリファレンスが設定されている場合、 リファレンスを取得してConsumerオブジェクトにセットする。 リファレンスがセットされていなければ無視して継続。 (OutPortがconnect() 呼び出しのエントリポイントの場合は、 InPortのオブジェクトリファレンスはセットされていないはずである。)
  3. PortBase.connect() をコール Portの接続の基本処理が行われる。
  4. 上記2.でInPortのリファレンスが取得できなければ、再度InPortに 関連する connector 情報を取得する。
  5. ConnectorProfile.properties で与えられた情報から、 OutPort側の初期化処理を行う。
  • [dataport.interface_type] – CORBA_Any の場合: InPortAny を通してデータ交換される。 ConnectorProfile.properties["dataport.corba_any.inport_ref"]に InPortAny のオブジェクトリファレンスをセットする。 – RawTCP の場合: Raw TCP socket を通してデータ交換される。 ConnectorProfile.properties["dataport.raw_tcp.server_addr"] にInPort側のサーバアドレスをセットする。
  • [dataport.dataflow_type] – Pushの場合: Subscriberを生成する。Subscriberのタイプは、 dataport.subscription_type に設定されている。 – Pullの場合: InPort側がデータをPull型で取得するため、 特に何もする必要が無い。
  • [dataport.subscription_type] – Onceの場合: SubscriberOnceを生成する。 – Newの場合: SubscriberNewを生成する。 – Periodicの場合: SubscriberPeriodicを生成する。
  • [dataport.push_interval] – dataport.subscription_type=Periodicの場合周期を設定する。
  1. 上記の処理のうち一つでもエラーであれば、エラーリターンする。 正常に処理が行われた場合はRTC.RTC_OKでリターンする。
から
0.2.0

構築子と解体子

◆ __init__()

OpenRTM_aist.OutPortBase.OutPortBase.__init__ ( self,
name,
data_type )

コンストラクタ

コンストラクタ。

引数
self
nameポート名

OutPortBase.OutPortBase(const char* name, const char* data_type)

OpenRTM_aist.PortBase.PortBaseを再実装しています。

OpenRTM_aist.CSPOutPort.CSPOutPort, OpenRTM_aist.OutPort.OutPortで再実装されています。

◆ __del__()

OpenRTM_aist.OutPortBase.OutPortBase.__del__ ( self,
PortBase = OpenRTM_aist.PortBase )

デストラクタ

デストラクタ。 登録された全ての Publisher を削除する。

引数
self

OpenRTM_aist.PortBase.PortBaseを再実装しています。

OpenRTM_aist.CSPOutPort.CSPOutPort, OpenRTM_aist.OutPort.OutPortで再実装されています。

メソッド詳解

◆ activateInterfaces()

OpenRTM_aist.OutPortBase.OutPortBase.activateInterfaces ( self)

OutPortを activates する

void OutPortBase.activateInterfaces()

◆ addConnectorDataListener()

OpenRTM_aist.OutPortBase.OutPortBase.addConnectorDataListener ( self,
listener_type,
listener )

ConnectorDataListener リスナを追加する

バッファ書き込みまたは読み出しイベントに関連する各種リスナを設定する。

設定できるリスナのタイプとコールバックイベントは以下の通り

  • ON_BUFFER_WRITE: バッファ書き込み時
  • ON_BUFFER_FULL: バッファフル時
  • ON_BUFFER_WRITE_TIMEOUT: バッファ書き込みタイムアウト時
  • ON_BUFFER_OVERWRITE: バッファ上書き時
  • ON_BUFFER_READ: バッファ読み出し時
  • ON_SEND: InProtへの送信時
  • ON_RECEIVED: InProtへの送信完了時
  • ON_SEND_ERTIMEOUT: OutPort側タイムアウト時
  • ON_SEND_ERERROR: OutPort側エラー時
  • ON_RECEIVER_FULL: InProt側バッファフル時
  • ON_RECEIVER_TIMEOUT: InProt側バッファタイムアウト時
  • ON_RECEIVER_ERROR: InProt側エラー時

リスナは ConnectorDataListener を継承し、以下のシグニチャを持つ operator() を実装している必要がある。

ConnectorDataListener:: operator()(const ConnectorProfile&, const cdrStream&)

デフォルトでは、この関数に与えたリスナオブジェクトの所有権は OutPortに移り、OutPort解体時もしくは、 removeConnectorDataListener() により削除時に自動的に解体される。 リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引 数に false を指定し、自動的な解体を抑制することができる。

引数
listener_typeリスナタイプ
listenerリスナオブジェクトへのポインタ

void addConnectorDataListener(ConnectorDataListenerType listener_type, ConnectorDataListener* listener);

◆ addConnectorListener()

OpenRTM_aist.OutPortBase.OutPortBase.addConnectorListener ( self,
callback_type,
listener )

ConnectorListener リスナを追加する

バッファ書き込みまたは読み出しイベントに関連する各種リスナを設定する。

設定できるリスナのタイプは

  • ON_BUFFER_EMPTY: バッファが空の場合
  • ON_BUFFER_READTIMEOUT: バッファが空でタイムアウトした場合

リスナは以下のシグニチャを持つ operator() を実装している必要がある。

ConnectorListener.operator()(const ConnectorProfile&)

デフォルトでは、この関数に与えたリスナオブジェクトの所有権は OutPortに移り、OutPort解体時もしくは、 removeConnectorListener() により削除時に自動的に解体される。 リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引 数に false を指定し、自動的な解体を抑制することができる。

引数
listener_typeリスナタイプ
listenerリスナオブジェクトへのポインタ

void addConnectorListener(ConnectorListenerType callback_type, ConnectorListener* listener);

◆ configure()

OpenRTM_aist.OutPortBase.OutPortBase.configure ( self)

OutPortの設定を行う

void OutPortBase.configure()

◆ connect()

OpenRTM_aist.OutPortBase.OutPortBase.connect ( self,
connector_profile )

[CORBA interface] Port の接続を行う

与えられた ConnectoionProfile の情報に基づき、Port間の接続を確立 する。この関数は主にアプリケーションプログラムやツールから呼び出 すことを前提としている。

引数
connector_profileConnectorProfile
戻り値
ReturnCode_t 型のリターンコード

OpenRTM_aist.PortBase.PortBaseを再実装しています。

◆ connectors()

OpenRTM_aist.OutPortBase.OutPortBase.connectors ( self)

Connector を取得

const std.vector<OutPortConnector*>& OutPortBase.connectors()

◆ createConnector()

OpenRTM_aist.OutPortBase.OutPortBase.createConnector ( self,
cprof,
prop,
provider_ = None,
consumer_ = None )

OutPortPushConnector の生成

OutPortConnector* OutPortBase.createConnector(const ConnectorProfile& cprof, coil.Properties& prop, InPortConsumer* consumer)

◆ createConsumer()

OpenRTM_aist.OutPortBase.OutPortBase.createConsumer ( self,
cprof,
prop )

InPort consumer の生成

InPortConsumer* OutPortBase.createConsumer(const ConnectorProfile& cprof, coil.Properties& prop)

◆ createDuplexConnector()

OpenRTM_aist.OutPortBase.OutPortBase.createDuplexConnector ( self,
cprof,
prop,
provider_ )

InPortDuplexConnector の生成

双方向通信用コネクタを生成し、生成が成功すれば m_connectors に保存する。

引数
cprofコネクタプロファイル
propコネクタプロファイルをプロパティに変換
provider_プロバイダ
戻り値
生成したコネクタ。生成に失敗した場合 None を返す。

◆ createProvider()

OpenRTM_aist.OutPortBase.OutPortBase.createProvider ( self,
cprof,
prop )

OutPort provider の生成

OutPortProvider* OutPortBase.createProvider(ConnectorProfile& cprof, coil.Properties& prop)

◆ deactivateInterfaces()

OpenRTM_aist.OutPortBase.OutPortBase.deactivateInterfaces ( self)

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

void OutPortBase.deactivateInterfaces()

◆ getConnectorById()

OpenRTM_aist.OutPortBase.OutPortBase.getConnectorById ( self,
id )

ConnectorProfileをIDで取得

現在所有しているコネクタをIDで取得する。

引数
idConnector ID
戻り値
コネクタへのポインタ

OutPortConnector* getConnectorById(const char* id);

◆ getConnectorByName()

OpenRTM_aist.OutPortBase.OutPortBase.getConnectorByName ( self,
name )

ConnectorProfileを名前で取得

現在所有しているコネクタを名前で取得する。

引数
nameConnector name
戻り値
コネクタへのポインタ

OutPortConnector* getConnectorByName(const char* name);

◆ getConnectorIds()

OpenRTM_aist.OutPortBase.OutPortBase.getConnectorIds ( self)

ConnectorId を取得

coil.vstring OutPortBase.getConnectorIds()

◆ getConnectorNames()

OpenRTM_aist.OutPortBase.OutPortBase.getConnectorNames ( self)

Connectorの名前を取得

coil.vstring OutPortBase.getConnectorNames()

◆ getConnectorProfileById()

OpenRTM_aist.OutPortBase.OutPortBase.getConnectorProfileById ( self,
id )

ConnectorProfileをIDで取得

bool OutPortBase.getConnectorProfileById(const char* id, ConnectorInfo& prof)

◆ getConnectorProfileByName()

OpenRTM_aist.OutPortBase.OutPortBase.getConnectorProfileByName ( self,
name )

ConnectorProfileを名前で取得

bool OutPortBase.getConnectorProfileByName(const char* name, ConnectorInfo& prof)

◆ getConnectorProfiles()

OpenRTM_aist.OutPortBase.OutPortBase.getConnectorProfiles ( self)

ConnectorProfile を取得

ConnectorBase.ConnectorInfoList OutPortBase.getConnectorProfiles()

◆ getLocalInPort()

OpenRTM_aist.OutPortBase.OutPortBase.getLocalInPort ( self,
profile )

ローカルのピアInPortを取得

引数
self
profileコネクタプロファイル
戻り値
InPortのサーバント(取得に失敗した場合はNone)

InPortBase* getLocalInPort(const ConnectorInfo& profile)

◆ init()

OpenRTM_aist.OutPortBase.OutPortBase.init ( self,
prop )

プロパティの初期化

OutPortのプロパティを初期化する

void init(coil.Properties& prop);

OpenRTM_aist.CSPOutPort.CSPOutPortで再実装されています。

◆ initConsumers()

OpenRTM_aist.OutPortBase.OutPortBase.initConsumers ( self)

InPort consumer の初期化

void OutPortBase.initConsumers()

◆ initProviders()

OpenRTM_aist.OutPortBase.OutPortBase.initProviders ( self)

OutPort provider の初期化

void OutPortBase.initProviders()

◆ notify_connect()

OpenRTM_aist.OutPortBase.OutPortBase.notify_connect ( self,
connector_profile )

引数
self
connector_profile
戻り値

OpenRTM_aist.PortBase.PortBaseを再実装しています。

OpenRTM_aist.CSPOutPort.CSPOutPortで再実装されています。

◆ properties()

OpenRTM_aist.OutPortBase.OutPortBase.properties ( self)

プロパティを取得する

OutPortのプロパティを取得する。

戻り値
プロパティ

coil.Properties& OutPortBase.properties()

◆ publishInterfaces()

OpenRTM_aist.OutPortBase.OutPortBase.publishInterfaces ( self,
cprof )

Interface情報を公開する

ReturnCode_t OutPortBase.publishInterfaces(ConnectorProfile& cprof)

OpenRTM_aist.PortBase.PortBaseを再実装しています。

◆ removeConnectorDataListener()

OpenRTM_aist.OutPortBase.OutPortBase.removeConnectorDataListener ( self,
listener_type,
listener )

ConnectorDataListener リスナを削除する

設定した各種リスナを削除する。

引数
listener_typeリスナタイプ
listenerリスナオブジェクトへのポインタ

void removeConnectorDataListener(ConnectorDataListenerType listener_type, ConnectorDataListener* listener);

◆ removeConnectorListener()

OpenRTM_aist.OutPortBase.OutPortBase.removeConnectorListener ( self,
callback_type,
listener )

ConnectorDataListener リスナを削除する

設定した各種リスナを削除する。

引数
listener_typeリスナタイプ
listenerリスナオブジェクトへのポインタ

void removeConnectorListener(ConnectorListenerType callback_type, ConnectorListener* listener);

◆ subscribeInterfaces()

OpenRTM_aist.OutPortBase.OutPortBase.subscribeInterfaces ( self,
cprof )

Interface情報を取得する

ReturnCode_t OutPortBase.subscribeInterfaces(const ConnectorProfile& cprof)

OpenRTM_aist.PortBase.PortBaseを再実装しています。

◆ unsubscribeInterfaces()

OpenRTM_aist.OutPortBase.OutPortBase.unsubscribeInterfaces ( self,
connector_profile )

登録されているInterface情報を解除する

void OutPortBase.unsubscribeInterfaces(const ConnectorProfile& connector_profile)

OpenRTM_aist.PortBase.PortBaseを再実装しています。

◆ write()

OpenRTM_aist.OutPortBase.OutPortBase.write ( self)

データ書き込み

ポートへデータを書き込む。 バインドされた変数に設定された値をポートに書き込む。

戻り値
書き込み処理結果(書き込み成功:true、書き込み失敗:false)

virtual bool write() = 0;

OpenRTM_aist.CSPOutPort.CSPOutPort, OpenRTM_aist.OutPort.OutPortで再実装されています。


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