OpenRTM-aist 2.0.2
読み取り中…
検索中…
一致する文字列を見つけられません
RTC::PublisherPeriodic クラス

PublisherPeriodic クラス [詳解]

#include <PublisherPeriodic.h>

RTC::PublisherPeriodic の継承関係図
RTC::PublisherPeriodic 連携図

公開メンバ関数

 PublisherPeriodic ()
 コンストラクタ
 
 ~PublisherPeriodic () 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 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 onBufferEmpty ()
 ON_BUFFER_EMPTYのリスナへ通知する。
 
void onSenderEmpty ()
 ON_SENDER_EMPTYのリスナへ通知する。
 
void onSenderError ()
 ON_SENDER_ERRORのリスナへ通知する。
 

詳解

PublisherPeriodic クラス

周期的にデータを送信するための Publisher クラス。このクラスは、通 常 Connector 内にあって、バッファおよびコンシューマに関連付けられ る。一定周期ごとにバッファからデータを取り出しコンシューマに対して データを送出する。

列挙型メンバ詳解

◆ Policy

列挙値
PUBLISHER_POLICY_ALL 
PUBLISHER_POLICY_FIFO 
PUBLISHER_POLICY_SKIP 
PUBLISHER_POLICY_NEW 

構築子と解体子

◆ PublisherPeriodic()

RTC::PublisherPeriodic::PublisherPeriodic ( )

コンストラクタ

◆ ~PublisherPeriodic()

RTC::PublisherPeriodic::~PublisherPeriodic ( )
override

デストラクタ

デストラクタ

関数詳解

◆ activate()

DataPortStatus RTC::PublisherPeriodic::activate ( )
overridevirtual

アクティブ化する

Publisher をアクティブ化する。この関数を呼び出すことにより、 Publisherが持つ、データを送信するスレッドが動作を開始する。初期 化が行われていないなどにより、事前条件を満たさない場合、エラーコー ド PRECONDITION_NOT_MET を返す。

戻り値
PORT_OK 正常終了 PRECONDITION_NOT_MET 事前条件を満たさない

RTC::PublisherBaseを実装しています。

◆ convertReturn()

DataPortStatus RTC::PublisherPeriodic::convertReturn ( BufferStatus status,
ByteData & data )
protected

BufferStatus から DataPortStatus への変換

バッファからの戻り値を DataPortStatus 型へ変換する関数。そ れぞれ、以下のように変換される。変換時にコールバックを呼ぶ場合、 コールバク関数も付記する。

  • BUFFER_OK: PORT_OK
    • None
  • BUFFER_ERROR: BUFFER_ERROR
    • None
  • BUFFER_FULL: BUFFER_FULL
  • NOT_SUPPORTED: PORT_ERROR
    • None
  • TIMEOUT: BUFFER_TIMEOUT
  • PRECONDITION_NOT_MET: PRECONDITION_NOT_MET
    • None
  • other: PORT_ERROR
    • None
引数
statusBufferStatus
datacdrMemoryStream
戻り値
DataPortStatu 型のリターンコード

◆ createTask()

bool RTC::PublisherPeriodic::createTask ( const coil::Properties & prop)
protected

Task の設定

◆ deactivate()

DataPortStatus RTC::PublisherPeriodic::deactivate ( )
overridevirtual

非アクティブ化する

Publisher を非アクティブ化する。この関数を呼び出すことにより、 Publisherが持つ、データを送信するスレッドが動作を停止する。初期 化が行われていないなどにより、事前条件を満たさない場合、エラーコー ド PRECONDITION_NOT_MET を返す。

戻り値
PORT_OK 正常終了 PRECONDITION_NOT_MET 事前条件を満たさない

RTC::PublisherBaseを実装しています。

◆ init()

DataPortStatus RTC::PublisherPeriodic::init ( coil::Properties & prop)
overridevirtual

初期化

このクラスのオブジェクトを使用するのに先立ち、必ずこの関数を呼び 出す必要がある。引数には、このオブジェクトの各種設定情報を含む Properties を与える。少なくとも、送出処理の呼び出し周期を単位 Hz の数値として Propertyオブジェクトの publisher.push_rate をキー とする要素に設定する必要がある。周期 5ms すなわち、200Hzの場合、 200.0 を設定する。 dataport.publisher.push_rate が未設定の場合、 false が返される。データをプッシュする際のポリシーとして publisher.push_policy をキーとする値に、all, fifo, skip, new の いずれかを与えることができる。

以下のオプションを与えることができる。

  • publisher.thread_type: スレッドのタイプ (文字列、デフォルト: default)
  • publisher.push_rate: Publisherの送信周期 (数値)
  • publisher.push_policy: Pushポリシー (all, fifo, skip, new)
  • publisher.skip_count: 上記ポリシが skip のときのスキップ数
  • measurement.exec_time: タスク実行時間計測 (enable/disable)
  • measurement.exec_count: タスク関数実行時間計測周期 (数値, 回数)
  • measurement.period_time: タスク周期時間計測 (enable/disable)
  • measurement.period_count: タスク周期時間計測周期 (数値, 回数)
引数
property本Publisherの駆動制御情報を設定したPropertyオブジェクト
戻り値
DataPortStatus PORT_OK 正常終了 INVALID_ARGS Properties が不正な値を含む

RTC::PublisherBaseを実装しています。

◆ invokeListener()

DataPortStatus RTC::PublisherPeriodic::invokeListener ( DataPortStatus status,
ByteData & data )
protected

DataPortStatusに従ってリスナへ通知する関数を呼び出す。

引数
statusDataPortStatus
datacdrMemoryStream
戻り値
リターンコード

◆ isActive()

bool RTC::PublisherPeriodic::isActive ( )
overridevirtual

アクティブ化確認

Publisher はデータポートと同期して activate/deactivate される。 activate() / deactivate() 関数によって、アクティブ状態と非アクティ ブ状態が切り替わる。この関数により、現在アクティブ状態か、非アク ティブ状態かを確認することができる。

戻り値
状態確認結果(アクティブ状態:true、非アクティブ状態:false)

RTC::PublisherBaseを実装しています。

◆ onBufferEmpty()

void RTC::PublisherPeriodic::onBufferEmpty ( )
inlineprotected

ON_BUFFER_EMPTYのリスナへ通知する。

参照先 RTC::ConnectorListenersBase::notify(), RTC::ON_BUFFER_EMPTY.

◆ onBufferFull()

void RTC::PublisherPeriodic::onBufferFull ( ByteData & data)
inlineprotected

ON_BUFFER_FULLリスナへイベントを通知する。

引数
datacdrMemoryStream

参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_BUFFER_FULL.

◆ onBufferRead()

void RTC::PublisherPeriodic::onBufferRead ( ByteData & data)
inlineprotected

ON_BUFFER_READのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_BUFFER_READ.

◆ onBufferWrite()

void RTC::PublisherPeriodic::onBufferWrite ( ByteData & data)
inlineprotected

ON_BUFFER_WRITEのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_BUFFER_WRITE.

◆ onBufferWriteTimeout()

void RTC::PublisherPeriodic::onBufferWriteTimeout ( ByteData & data)
inlineprotected

ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_BUFFER_WRITE_TIMEOUT.

◆ onReceived()

void RTC::PublisherPeriodic::onReceived ( ByteData & data)
inlineprotected

ON_RECEIVEDのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_RECEIVED.

◆ onReceiverError()

void RTC::PublisherPeriodic::onReceiverError ( ByteData & data)
inlineprotected

ON_RECEIVER_ERRORのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_RECEIVER_ERROR.

◆ onReceiverFull()

void RTC::PublisherPeriodic::onReceiverFull ( ByteData & data)
inlineprotected

ON_RECEIVER_FULLのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_RECEIVER_FULL.

◆ onReceiverTimeout()

void RTC::PublisherPeriodic::onReceiverTimeout ( ByteData & data)
inlineprotected

ON_RECEIVER_TIMEOUTのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_RECEIVER_TIMEOUT.

◆ onSend()

void RTC::PublisherPeriodic::onSend ( ByteData & data)
inlineprotected

ON_SENDのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ConnectorListenersBase::notifyOut(), RTC::ON_SEND.

◆ onSenderEmpty()

void RTC::PublisherPeriodic::onSenderEmpty ( )
inlineprotected

ON_SENDER_EMPTYのリスナへ通知する。

参照先 RTC::ConnectorListenersBase::notify(), RTC::ON_SENDER_EMPTY.

◆ onSenderError()

void RTC::PublisherPeriodic::onSenderError ( )
inlineprotected

ON_SENDER_ERRORのリスナへ通知する。

参照先 RTC::ConnectorListenersBase::notify(), RTC::ON_SENDER_ERROR.

◆ pushAll()

DataPortStatus RTC::PublisherPeriodic::pushAll ( )
protected

push "all" policy

◆ pushFifo()

DataPortStatus RTC::PublisherPeriodic::pushFifo ( )
protected

push "fifo" policy

◆ pushNew()

DataPortStatus RTC::PublisherPeriodic::pushNew ( )
protected

push "new" policy

◆ pushSkip()

DataPortStatus RTC::PublisherPeriodic::pushSkip ( )
protected

push "skip" policy

◆ setBuffer()

DataPortStatus RTC::PublisherPeriodic::setBuffer ( CdrBufferBase * buffer)
override

バッファのセット

この関数では、この Publisher に関連付けられるバッファをセットする。 バッファオブジェクトがヌルポインタの場合、INVALID_ARGSが返される。 それ以外の場合は、PORT_OK が返される。

引数
bufferCDR buffer へのポインタ
戻り値
DataPortStatus PORT_OK 正常終了 INVALID_ARGS 引数に不正な値が含まれている

◆ setConsumer()

DataPortStatus RTC::PublisherPeriodic::setConsumer ( InPortConsumer * consumer)
overridevirtual

InPortコンシューマのセット

この関数では、この Publisher に関連付けられるコンシューマをセットする。 コンシューマオブジェクトがヌルポインタの場合、INVALID_ARGSが返される。 それ以外の場合は、PORT_OK が返される。

引数
consumerConsumer へのポインタ
戻り値
DataPortStatus PORT_OK 正常終了 INVALID_ARGS 引数に不正な値が含まれている

RTC::PublisherBaseを実装しています。

◆ setListener()

DataPortStatus RTC::PublisherPeriodic::setListener ( ConnectorInfo & info,
ConnectorListenersBase * listeners )
overridevirtual

リスナを設定する。

Publisher に対してリスナオブジェクト ConnectorListeners を設定する。 各種リスナオブジェクトを含む ConnectorListeners をセットすることで、 バッファの読み書き、データの送信時等にこれらのリスナをコールする。 ConnectorListeners オブジェクトの所有権はポートまたは RTObject が持ち Publisher 削除時に ConnectorListeners は削除されることはない。 ConnectorListeners がヌルポインタの場合 INVALID_ARGS を返す。

引数
infoConnectorProfile をローカル化したオブジェクト ConnectorInfo
listenersリスナを多数保持する ConnectorListeners オブジェクト
戻り値
PORT_OK 正常終了 INVALID_ARGS 不正な引数

RTC::PublisherBaseを実装しています。

◆ setPushPolicy()

void RTC::PublisherPeriodic::setPushPolicy ( const coil::Properties & prop)
protected

PushPolicy の設定

◆ svc()

virtual int RTC::PublisherPeriodic::svc ( )
virtual

スレッド実行関数

coil::PeriodicTask により周期実行されるタスク実行関数。

◆ write()

DataPortStatus RTC::PublisherPeriodic::write ( ByteDataStreamBase * data,
std::chrono::nanoseconds timeout )
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タイムアウト時間
戻り値
PORT_OK 正常終了 PRECONDITION_NO_MET consumer, buffer, listener等が適切に設定 されていない等、このオブジェクトの事前条件 を満たさない場合。 CONNECTION_LOST 接続が切断されたことを検知した。 BUFFER_FULL バッファがフル状態である。 BUFFER_ERROR バッファに何らかのエラーが生じた場合。 NOT_SUPPORTED サポートされない操作が行われた。 TIMEOUT タイムアウトした。

RTC::PublisherBaseを実装しています。


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