OpenRTM-aist  2.1.0
公開メンバ関数 | 限定公開型 | 限定公開メンバ関数 | 全メンバ一覧
RTC::PublisherNew クラス

PublisherNew クラス [詳解]

#include <PublisherNew.h>

RTC::PublisherNew の継承関係図
Inheritance graph
[凡例]
RTC::PublisherNew 連携図
Collaboration graph
[凡例]

公開メンバ関数

 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の駆動は、データ送出のタイミングになるまでブロックされ、 送出タイミングの通知を受けると、即座にコンシューマの送出処理を呼び出す。

列挙型メンバ詳解

◆ Policy

enum RTC::PublisherNew::Policy
protected
列挙値
PUBLISHER_POLICY_ALL 
PUBLISHER_POLICY_FIFO 
PUBLISHER_POLICY_SKIP 
PUBLISHER_POLICY_NEW 

構築子と解体子

◆ PublisherNew()

RTC::PublisherNew::PublisherNew ( )

コンストラクタ

コンストラクタ

◆ ~PublisherNew()

RTC::PublisherNew::~PublisherNew ( )
override

デストラクタ

デストラクタ

関数詳解

◆ activate()

DataPortStatus RTC::PublisherNew::activate ( )
overridevirtual

アクティブ化する

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

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

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

◆ convertReturn()

DataPortStatus RTC::PublisherNew::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::PublisherNew::createTask ( const coil::Properties &  prop)
protected

Task の設定

◆ deactivate()

DataPortStatus RTC::PublisherNew::deactivate ( )
overridevirtual

非アクティブ化する

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

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

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

◆ init()

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

初期化

このクラスのオブジェクトを使用するのに先立ち、必ずこの関数を呼び 出す必要がある。引数には、このオブジェクトの各種設定情報を含む Properties を与える。データをプッシュする際のポリシーとして publisher.push_policy をキーとする値に、all, fifo, skip, new の いずれかを与えることができる。

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

  • thread_type: スレッドのタイプ (文字列、デフォルト: default)
  • 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::PublisherNew::invokeListener ( DataPortStatus  status,
ByteData data 
)
protected

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

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

◆ isActive()

bool RTC::PublisherNew::isActive ( )
overridevirtual

アクティブ化確認

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

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

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

◆ onBufferFull()

void RTC::PublisherNew::onBufferFull ( ByteData data)
inlineprotected

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

引数
datacdrMemoryStream

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

◆ onBufferRead()

void RTC::PublisherNew::onBufferRead ( ByteData data)
inlineprotected

ON_BUFFER_READのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ onBufferWrite()

void RTC::PublisherNew::onBufferWrite ( ByteData data)
inlineprotected

ON_BUFFER_WRITEのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ onBufferWriteOverwrite()

void RTC::PublisherNew::onBufferWriteOverwrite ( ByteData data)
inlineprotected

ON_BUFFER_OVERWRITEのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ onBufferWriteTimeout()

void RTC::PublisherNew::onBufferWriteTimeout ( ByteData data)
inlineprotected

ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ onReceived()

void RTC::PublisherNew::onReceived ( ByteData data)
inlineprotected

ON_RECEIVEDのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ onReceiverError()

void RTC::PublisherNew::onReceiverError ( ByteData data)
inlineprotected

ON_RECEIVER_ERRORのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ onReceiverFull()

void RTC::PublisherNew::onReceiverFull ( ByteData data)
inlineprotected

ON_RECEIVER_FULLのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ onReceiverTimeout()

void RTC::PublisherNew::onReceiverTimeout ( ByteData data)
inlineprotected

ON_RECEIVER_TIMEOUTのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ onSend()

void RTC::PublisherNew::onSend ( ByteData data)
inlineprotected

ON_SENDのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ onSenderError()

void RTC::PublisherNew::onSenderError ( )
inlineprotected

ON_SENDER_ERRORのリスナへ通知する。

引数
datacdrMemoryStream

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

◆ pushAll()

DataPortStatus RTC::PublisherNew::pushAll ( )
protected

push "all" policy

◆ pushFifo()

DataPortStatus RTC::PublisherNew::pushFifo ( )
protected

push "fifo" policy

◆ pushNew()

DataPortStatus RTC::PublisherNew::pushNew ( )
protected

push "new" policy

◆ pushSkip()

DataPortStatus RTC::PublisherNew::pushSkip ( )
protected

push "skip" policy

◆ setBuffer()

DataPortStatus RTC::PublisherNew::setBuffer ( CdrBufferBase buffer)
override

バッファのセット

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

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

◆ setConsumer()

DataPortStatus RTC::PublisherNew::setConsumer ( InPortConsumer consumer)
overridevirtual

InPortコンシューマのセット

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

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

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

◆ setListener()

DataPortStatus RTC::PublisherNew::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::PublisherNew::setPushPolicy ( const coil::Properties &  prop)
protected

PushPolicy の設定

◆ svc()

virtual int RTC::PublisherNew::svc ( )
virtual

スレッド実行関数

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

◆ write()

DataPortStatus RTC::PublisherNew::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を実装しています。


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