|
| void | configure () |
| | OutPortの設定を行う
|
| |
| 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 () |
| | OutPort provider の初期化
|
| |
| void | initConsumers () |
| | InPort consumer の初期化
|
| |
| bool | checkEndian (const coil::Properties &prop, bool &littleEndian) |
| | シリアライザのエンディアンをチェックする
|
| |
| OutPortProvider * | createProvider (ConnectorProfile &cprof, coil::Properties &prop) |
| | OutPort provider の生成
|
| |
| InPortConsumer * | createConsumer (const ConnectorProfile &cprof, coil::Properties &prop) |
| | InPort consumer の生成
|
| |
| OutPortConnector * | createConnector (const ConnectorProfile &cprof, coil::Properties &prop, InPortConsumer *consumer) |
| | OutPortPushConnector の生成
|
| |
| OutPortConnector * | createConnector (const ConnectorProfile &cprof, coil::Properties &prop, OutPortProvider *provider) |
| | OutPortPullConnector の生成
|
| |
| ReturnCode_t | notify_connect (ConnectorProfile &connector_profile) override |
| |
| InPortBase * | getLocalInPort (const ConnectorInfo &profile) |
| | ローカルのピアInPortを取得
|
| |
| 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) |
| | 指定のシリアライザが使用可能かを判定する
|
| |
OutPort 基底クラス
OutPort の基底クラス。
Properties: port.outport プロパティは
- port.outport
- port.outport.[name]
ConnectorProfile.properties の場合は
以下に指定したものが渡される。 (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.skip_count:
publisher.skip_count = n
n: n要素毎にひとつ送信
- publisher.push_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() では以下のシーケンスで処理が行われる。
- OutPort に関連する connector 情報の生成およびセット
- InPortに関連する connector 情報の取得
- ConnectorProfile::properties["dataport.corba_any.inport_ref"]に OutPortAny のオブジェクトリファレンスが設定されている場合、 リファレンスを取得してConsumerオブジェクトにセットする。 リファレンスがセットされていなければ無視して継続。 (OutPortがconnect() 呼び出しのエントリポイントの場合は、 InPortのオブジェクトリファレンスはセットされていないはずである。)
- PortBase::connect() をコール Portの接続の基本処理が行われる。
- 上記2.でInPortのリファレンスが取得できなければ、再度InPortに 関連する connector 情報を取得する。
- 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.publisher.push_rate]
- dataport.subscription_type=Periodicの場合周期を設定する。
- 上記の処理のうち一つでもエラーであれば、エラーリターンする。 正常に処理が行われた場合はRTC::RTC_OKでリターンする。
- から
- 0.2.0
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 | リスナオブジェクトへのポインタ |
| autoclean | リスナオブジェクトの自動的解体を行うかどうかのフラグ |
参照元 RTC::OutPort< DataType >::OutPort().