|
OpenRTM-aist 2.0.2
|
PublisherNew クラス [詳解]
#include <PublisherNew.h>


公開メンバ関数 | |
| PublisherNew () | |
| コンストラクタ | |
| ~PublisherNew () override | |
| デストラクタ | |
| DataPortStatus | init (coil::Properties &prop) override |
| 初期化 | |
| DataPortStatus | setConsumer (InPortConsumer *consumer) override |
| InPortコンシューマのセット | |
| DataPortStatus | setBuffer (CdrBufferBase *buffer) override |
| バッファのセット | |
| DataPortStatus | setListener (ConnectorInfo &info, ConnectorListenersBase *listeners) override |
| リスナを設定する。 | |
| DataPortStatus | write (ByteDataStreamBase *data, std::chrono::nanoseconds timeout) override |
| データを書き込む | |
| bool | isActive () override |
| アクティブ化確認 | |
| DataPortStatus | activate () override |
| アクティブ化する | |
| DataPortStatus | deactivate () override |
| 非アクティブ化する | |
| virtual int | svc () |
| スレッド実行関数 | |
基底クラス RTC::PublisherBase に属する継承公開メンバ関数 | |
| virtual | ~PublisherBase ()=default |
| デストラクタ | |
| virtual DataPortStatus | setBuffer (BufferBase< ByteData > *buffer)=0 |
| バッファのセット | |
| virtual void | release () |
| Publisher を破棄する。 | |
限定公開型 | |
| enum | Policy { PUBLISHER_POLICY_ALL , PUBLISHER_POLICY_FIFO , PUBLISHER_POLICY_SKIP , PUBLISHER_POLICY_NEW } |
限定公開メンバ関数 | |
| void | setPushPolicy (const coil::Properties &prop) |
| PushPolicy の設定 | |
| bool | createTask (const coil::Properties &prop) |
| Task の設定 | |
| DataPortStatus | pushAll () |
| push "all" policy | |
| DataPortStatus | pushFifo () |
| push "fifo" policy | |
| DataPortStatus | pushSkip () |
| push "skip" policy | |
| DataPortStatus | pushNew () |
| push "new" policy | |
| DataPortStatus | convertReturn (BufferStatus status, ByteData &data) |
| BufferStatus から DataPortStatus への変換 | |
| DataPortStatus | invokeListener (DataPortStatus status, ByteData &data) |
| DataPortStatusに従ってリスナへ通知する関数を呼び出す。 | |
| void | onBufferWrite (ByteData &data) |
| ON_BUFFER_WRITEのリスナへ通知する。 | |
| void | onBufferFull (ByteData &data) |
| ON_BUFFER_FULLリスナへイベントを通知する。 | |
| void | onBufferWriteTimeout (ByteData &data) |
| ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。 | |
| void | onBufferWriteOverwrite (ByteData &data) |
| ON_BUFFER_OVERWRITEのリスナへ通知する。 | |
| void | onBufferRead (ByteData &data) |
| ON_BUFFER_READのリスナへ通知する。 | |
| void | onSend (ByteData &data) |
| ON_SENDのリスナへ通知する。 | |
| void | onReceived (ByteData &data) |
| ON_RECEIVEDのリスナへ通知する。 | |
| void | onReceiverFull (ByteData &data) |
| ON_RECEIVER_FULLのリスナへ通知する。 | |
| void | onReceiverTimeout (ByteData &data) |
| ON_RECEIVER_TIMEOUTのリスナへ通知する。 | |
| void | onReceiverError (ByteData &data) |
| ON_RECEIVER_ERRORのリスナへ通知する。 | |
| void | onSenderError () |
| ON_SENDER_ERRORのリスナへ通知する。 | |
PublisherNew クラス
バッファ内に新規データが格納されたタイミングで、その新規データを送信する。 データ送出タイミングを待つコンシューマを、送出する側とは異なるスレッドで 動作させる場合に使用。 Publisherの駆動は、データ送出のタイミングになるまでブロックされ、 送出タイミングの通知を受けると、即座にコンシューマの送出処理を呼び出す。
|
protected |
| RTC::PublisherNew::PublisherNew | ( | ) |
コンストラクタ
コンストラクタ
|
override |
デストラクタ
デストラクタ
|
overridevirtual |
アクティブ化する
Publisher をアクティブ化する。この関数を呼び出すことにより、 Publisherが持つ、データを送信するスレッドが動作を開始する。初期 化が行われていないなどにより、事前条件を満たさない場合、エラーコー ド PRECONDITION_NOT_MET を返す。
RTC::PublisherBaseを実装しています。
|
protected |
BufferStatus から DataPortStatus への変換
バッファからの戻り値を DataPortStatus 型へ変換する関数。そ れぞれ、以下のように変換される。変換時にコールバックを呼ぶ場合、 コールバク関数も付記する。
| status | BufferStatus |
| data | cdrMemoryStream |
|
protected |
Task の設定
|
overridevirtual |
非アクティブ化する
Publisher を非アクティブ化する。この関数を呼び出すことにより、 Publisherが持つ、データを送信するスレッドが動作を停止する。初期 化が行われていないなどにより、事前条件を満たさない場合、エラーコー ド PRECONDITION_NOT_MET を返す。
RTC::PublisherBaseを実装しています。
|
overridevirtual |
初期化
このクラスのオブジェクトを使用するのに先立ち、必ずこの関数を呼び 出す必要がある。引数には、このオブジェクトの各種設定情報を含む Properties を与える。データをプッシュする際のポリシーとして publisher.push_policy をキーとする値に、all, fifo, skip, new の いずれかを与えることができる。
以下のオプションを与えることができる。
| property | 本Publisherの駆動制御情報を設定したPropertyオブジェクト |
RTC::PublisherBaseを実装しています。
|
protected |
DataPortStatusに従ってリスナへ通知する関数を呼び出す。
| status | DataPortStatus |
| data | cdrMemoryStream |
|
overridevirtual |
アクティブ化確認
Publisher はデータポートと同期して activate/deactivate される。 activate() / deactivate() 関数によって、アクティブ状態と非アクティ ブ状態が切り替わる。この関数により、現在アクティブ状態か、非アク ティブ状態かを確認することができる。
RTC::PublisherBaseを実装しています。
|
inlineprotected |
ON_BUFFER_FULLリスナへイベントを通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_BUFFER_FULL.
|
inlineprotected |
ON_BUFFER_READのリスナへ通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_BUFFER_READ.
|
inlineprotected |
ON_BUFFER_WRITEのリスナへ通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_BUFFER_WRITE.
|
inlineprotected |
ON_BUFFER_OVERWRITEのリスナへ通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_BUFFER_OVERWRITE.
|
inlineprotected |
ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_BUFFER_WRITE_TIMEOUT.
|
inlineprotected |
ON_RECEIVEDのリスナへ通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_RECEIVED.
|
inlineprotected |
ON_RECEIVER_ERRORのリスナへ通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_RECEIVER_ERROR.
|
inlineprotected |
ON_RECEIVER_FULLのリスナへ通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_RECEIVER_FULL.
|
inlineprotected |
ON_RECEIVER_TIMEOUTのリスナへ通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_RECEIVER_TIMEOUT.
|
inlineprotected |
ON_SENDのリスナへ通知する。
| data | cdrMemoryStream |
|
inlineprotected |
ON_SENDER_ERRORのリスナへ通知する。
| data | cdrMemoryStream |
参照先 RTC::ConnectorListenersBase::notify(), RTC::ON_SENDER_ERROR.
|
protected |
push "all" policy
|
protected |
push "fifo" policy
|
protected |
push "new" policy
|
protected |
push "skip" policy
|
override |
バッファのセット
この関数では、この Publisher に関連付けられるバッファをセットする。 バッファオブジェクトがヌルポインタの場合、INVALID_ARGSが返される。 それ以外の場合は、PORT_OK が返される。
| buffer | CDR buffer へのポインタ |
|
overridevirtual |
InPortコンシューマのセット
この関数では、この Publisher に関連付けられるコンシューマをセットする。 コンシューマオブジェクトがヌルポインタの場合、INVALID_ARGSが返される。 それ以外の場合は、PORT_OK が返される。
| consumer | Consumer へのポインタ |
RTC::PublisherBaseを実装しています。
|
overridevirtual |
リスナを設定する。
Publisher に対してリスナオブジェクト ConnectorListeners を設定する。 各種リスナオブジェクトを含む ConnectorListeners をセットすることで、 バッファの読み書き、データの送信時等にこれらのリスナをコールする。 ConnectorListeners オブジェクトの所有権はポートまたは RTObject が持ち Publisher 削除時に ConnectorListeners は削除されることはない。 ConnectorListeners がヌルポインタの場合 INVALID_ARGS を返す。
| info | ConnectorProfile をローカル化したオブジェクト ConnectorInfo |
| listeners | リスナを多数保持する ConnectorListeners オブジェクト |
RTC::PublisherBaseを実装しています。
|
protected |
PushPolicy の設定
|
virtual |
スレッド実行関数
coil::PeriodicTask により周期実行されるタスク実行関数。
|
overridevirtual |
データを書き込む
Publisher が保持するバッファに対してデータを書き込む。コンシュー マ、バッファ、リスナ等が適切に設定されていない等、Publisher オブ ジェクトが正しく初期化されていない場合、この関数を呼び出すとエラー コード PRECONDITION_NOT_MET が返され、バッファへの書き込み等の操 作は一切行われない。
バッファへの書き込みと、InPortへのデータの送信は非同期的に行われ るため、この関数は、InPortへのデータ送信の結果を示す、 CONNECTION_LOST, BUFFER_FULL などのリターンコードを返すことがあ る。この場合、データのバッファへの書き込みは行われない。
バッファへの書き込みに対して、バッファがフル状態、バッファのエ ラー、バッファへの書き込みがタイムアウトした場合、バッファの事前 条件が満たされない場合にはそれぞれ、エラーコード BUFFER_FULL, BUFFER_ERROR, BUFFER_TIMEOUT, PRECONDITION_NOT_MET が返される。
これら以外のエラーの場合、PORT_ERROR が返される。
| data | 書き込むデータ |
| timeout | タイムアウト時間 |
RTC::PublisherBaseを実装しています。