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

PublisherNew クラス [詳解]

#include <PublisherNew.h>

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

公開型

typedef coil::Mutex Mutex
 
typedef coil::Condition< MutexCondition
 
typedef coil::Guard< coil::MutexGuard
 
- 基底クラス RTC::DataPortStatus に属する継承公開型
enum  Enum {
  PORT_OK = 0, PORT_ERROR, BUFFER_ERROR, BUFFER_FULL,
  BUFFER_EMPTY, BUFFER_TIMEOUT, SEND_FULL, SEND_TIMEOUT,
  RECV_EMPTY, RECV_TIMEOUT, INVALID_ARGS, PRECONDITION_NOT_MET,
  CONNECTION_LOST, UNKNOWN_ERROR
}
 

公開メンバ関数

DATAPORTSTATUS_ENUM PublisherNew ()
 コンストラクタ [詳解]
 
virtual ~PublisherNew (void)
 デストラクタ [詳解]
 
virtual ReturnCode init (coil::Properties &prop)
 初期化 [詳解]
 
virtual ReturnCode setConsumer (InPortConsumer *consumer)
 InPortコンシューマのセット [詳解]
 
virtual ReturnCode setBuffer (CdrBufferBase *buffer)
 バッファのセット [詳解]
 
virtual ReturnCode setListener (ConnectorInfo &info, ConnectorListeners *listeners)
 リスナを設定する。 [詳解]
 
virtual ReturnCode write (cdrMemoryStream &data, unsigned long sec, unsigned long usec)
 データを書き込む [詳解]
 
virtual bool isActive ()
 アクティブ化確認 [詳解]
 
virtual ReturnCode activate ()
 アクティブ化する [詳解]
 
virtual ReturnCode deactivate ()
 非アクティブ化する [詳解]
 
virtual int svc (void)
 スレッド実行関数 [詳解]
 
- 基底クラス RTC::PublisherBase に属する継承公開メンバ関数
virtual DATAPORTSTATUS_ENUM ~PublisherBase (void)
 デストラクタ [詳解]
 
virtual void release ()
 Publisher を破棄する。 [詳解]
 

限定公開型

enum  Policy { ALL, FIFO, SKIP, NEW }
 

限定公開メンバ関数

void setPushPolicy (const coil::Properties &prop)
 PushPolicy の設定 [詳解]
 
bool createTask (const coil::Properties &prop)
 Task の設定 [詳解]
 
ReturnCode pushAll ()
 push "all" policy [詳解]
 
ReturnCode pushFifo ()
 push "fifo" policy [詳解]
 
ReturnCode pushSkip ()
 push "skip" policy [詳解]
 
ReturnCode pushNew ()
 push "new" policy [詳解]
 
ReturnCode convertReturn (BufferStatus::Enum status, cdrMemoryStream &data)
 BufferStatus から DataPortStatus への変換 [詳解]
 
ReturnCode invokeListener (DataPortStatus::Enum status, cdrMemoryStream &data)
 DataPortStatusに従ってリスナへ通知する関数を呼び出す。 [詳解]
 
void onBufferWrite (cdrMemoryStream &data)
 ON_BUFFER_WRITEのリスナへ通知する。 [詳解]
 
void onBufferFull (cdrMemoryStream &data)
 ON_BUFFER_FULLリスナへイベントを通知する。 [詳解]
 
void onBufferWriteTimeout (cdrMemoryStream &data)
 ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。 [詳解]
 
void onBufferWriteOverwrite (cdrMemoryStream &data)
 ON_BUFFER_OVERWRITEのリスナへ通知する。 [詳解]
 
void onBufferRead (cdrMemoryStream &data)
 ON_BUFFER_READのリスナへ通知する。 [詳解]
 
void onSend (cdrMemoryStream &data)
 ON_SENDのリスナへ通知する。 [詳解]
 
void onReceived (cdrMemoryStream &data)
 ON_RECEIVEDのリスナへ通知する。 [詳解]
 
void onReceiverFull (cdrMemoryStream &data)
 ON_RECEIVER_FULLのリスナへ通知する。 [詳解]
 
void onReceiverTimeout (cdrMemoryStream &data)
 ON_RECEIVER_TIMEOUTのリスナへ通知する。 [詳解]
 
void onReceiverError (cdrMemoryStream &data)
 ON_RECEIVER_ERRORのリスナへ通知する。 [詳解]
 
void onSenderError ()
 ON_SENDER_ERRORのリスナへ通知する。 [詳解]
 

その他の継承メンバ

- 基底クラス RTC::DataPortStatus に属する継承静的公開メンバ関数
static const char * toString (DataPortStatus::Enum status)
 DataPortStatus リターンコードを文字列に変換 [詳解]
 

詳解

PublisherNew クラス

バッファ内に新規データが格納されたタイミングで、その新規データを送信する。 データ送出タイミングを待つコンシューマを、送出する側とは異なるスレッドで 動作させる場合に使用。 Publisherの駆動は、データ送出のタイミングになるまでブロックされ、 送出タイミングの通知を受けると、即座にコンシューマの送出処理を呼び出す。

型定義メンバ詳解

列挙型メンバ詳解

enum RTC::PublisherNew::Policy
protected
列挙値
ALL 
FIFO 
SKIP 
NEW 

構築子と解体子

DATAPORTSTATUS_ENUM RTC::PublisherNew::PublisherNew ( )

コンストラクタ

コンストラクタ

virtual RTC::PublisherNew::~PublisherNew ( void  )
virtual

デストラクタ

デストラクタ

関数詳解

virtual ReturnCode RTC::PublisherNew::activate ( )
virtual

アクティブ化する

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

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

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

ReturnCode RTC::PublisherNew::convertReturn ( BufferStatus::Enum  status,
cdrMemoryStream &  data 
)
protected

BufferStatus から DataPortStatus への変換

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

  • 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 型のリターンコード
bool RTC::PublisherNew::createTask ( const coil::Properties prop)
protected

Task の設定

virtual ReturnCode RTC::PublisherNew::deactivate ( )
virtual

非アクティブ化する

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

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

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

virtual ReturnCode RTC::PublisherNew::init ( coil::Properties prop)
virtual

初期化

このクラスのオブジェクトを使用するのに先立ち、必ずこの関数を呼び 出す必要がある。引数には、このオブジェクトの各種設定情報を含む 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オブジェクト
戻り値
ReturnCode PORT_OK 正常終了 INVALID_ARGS Properties が不正な値を含む

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

ReturnCode RTC::PublisherNew::invokeListener ( DataPortStatus::Enum  status,
cdrMemoryStream &  data 
)
protected

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

引数
statusDataPortStatus
datacdrMemoryStream
戻り値
リターンコード
virtual bool RTC::PublisherNew::isActive ( )
virtual

アクティブ化確認

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

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

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

void RTC::PublisherNew::onBufferFull ( cdrMemoryStream &  data)
inlineprotected

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

引数
datacdrMemoryStream

参照先 RTC::ON_BUFFER_FULL.

void RTC::PublisherNew::onBufferRead ( cdrMemoryStream &  data)
inlineprotected

ON_BUFFER_READのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ON_BUFFER_READ.

void RTC::PublisherNew::onBufferWrite ( cdrMemoryStream &  data)
inlineprotected

ON_BUFFER_WRITEのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ON_BUFFER_WRITE.

void RTC::PublisherNew::onBufferWriteOverwrite ( cdrMemoryStream &  data)
inlineprotected

ON_BUFFER_OVERWRITEのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ON_BUFFER_OVERWRITE.

void RTC::PublisherNew::onBufferWriteTimeout ( cdrMemoryStream &  data)
inlineprotected

ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ON_BUFFER_WRITE_TIMEOUT.

void RTC::PublisherNew::onReceived ( cdrMemoryStream &  data)
inlineprotected

ON_RECEIVEDのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ON_RECEIVED.

void RTC::PublisherNew::onReceiverError ( cdrMemoryStream &  data)
inlineprotected

ON_RECEIVER_ERRORのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ON_RECEIVER_ERROR.

void RTC::PublisherNew::onReceiverFull ( cdrMemoryStream &  data)
inlineprotected

ON_RECEIVER_FULLのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ON_RECEIVER_FULL.

void RTC::PublisherNew::onReceiverTimeout ( cdrMemoryStream &  data)
inlineprotected

ON_RECEIVER_TIMEOUTのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ON_RECEIVER_TIMEOUT.

void RTC::PublisherNew::onSend ( cdrMemoryStream &  data)
inlineprotected

ON_SENDのリスナへ通知する。

引数
datacdrMemoryStream

参照先 RTC::ON_SEND.

void RTC::PublisherNew::onSenderError ( )
inlineprotected

ON_SENDER_ERRORのリスナへ通知する。

引数
datacdrMemoryStream

参照先 DLL_EXPORT, RTC::ON_SENDER_ERROR, PublisherNewInit().

ReturnCode RTC::PublisherNew::pushAll ( )
protected

push "all" policy

ReturnCode RTC::PublisherNew::pushFifo ( )
protected

push "fifo" policy

ReturnCode RTC::PublisherNew::pushNew ( )
protected

push "new" policy

ReturnCode RTC::PublisherNew::pushSkip ( )
protected

push "skip" policy

virtual ReturnCode RTC::PublisherNew::setBuffer ( CdrBufferBase buffer)
virtual

バッファのセット

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

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

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

virtual ReturnCode RTC::PublisherNew::setConsumer ( InPortConsumer consumer)
virtual

InPortコンシューマのセット

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

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

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

virtual ReturnCode RTC::PublisherNew::setListener ( ConnectorInfo info,
ConnectorListeners listeners 
)
virtual

リスナを設定する。

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

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

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

void RTC::PublisherNew::setPushPolicy ( const coil::Properties prop)
protected

PushPolicy の設定

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

スレッド実行関数

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

virtual ReturnCode RTC::PublisherNew::write ( cdrMemoryStream &  data,
unsigned long  sec,
unsigned long  usec 
)
virtual

データを書き込む

Publisher が保持するバッファに対してデータを書き込む。コンシュー マ、バッファ、リスナ等が適切に設定されていない等、Publisher オブ ジェクトが正しく初期化されていない場合、この関数を呼び出すとエラー コード PRECONDITION_NOT_MET が返され、バッファへの書き込み等の操 作は一切行われない。

バッファへの書き込みと、InPortへのデータの送信は非同期的に行われ るため、この関数は、InPortへのデータ送信の結果を示す、 CONNECTION_LOST, BUFFER_FULL などのリターンコードを返すことがあ る。この場合、データのバッファへの書き込みは行われない。

バッファへの書き込みに対して、バッファがフル状態、バッファのエ ラー、バッファへの書き込みがタイムアウトした場合、バッファの事前 条件が満たされない場合にはそれぞれ、エラーコード BUFFER_FULL, BUFFER_ERROR, BUFFER_TIMEOUT, PRECONDITION_NOT_MET が返される。

これら以外のエラーの場合、PORT_ERROR が返される。

引数
data書き込むデータ
secタイムアウト時間
nsecタイムアウト時間
戻り値
PORT_OK 正常終了 PRECONDITION_NO_MET consumer, buffer, listener等が適切に設定 されていない等、このオブジェクトの事前条件 を満たさない場合。 CONNECTION_LOST 接続が切断されたことを検知した。 BUFFER_FULL バッファがフル状態である。 BUFFER_ERROR バッファに何らかのエラーが生じた場合。 NOT_SUPPORTED サポートされない操作が行われた。 TIMEOUT タイムアウトした。

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


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