クラス RTC::PublisherNew

PublisherNew クラス. [詳細]

#include <PublisherNew.h>

RTC::PublisherNewに対する継承グラフ
RTC::PublisherBase RTC::DataPortStatus

すべてのメンバ一覧

Public 型

typedef coil::Mutex Mutex
typedef coil::Condition< MutexCondition
typedef coil::Guard< coil::Mutex > Guard

Public メソッド

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 (const cdrMemoryStream &data, unsigned long sec, unsigned long usec)
 データを書き込む
virtual bool isActive ()
 アクティブ化確認
virtual ReturnCode activate ()
 アクティブ化する
virtual ReturnCode deactivate ()
 非アクティブ化する
virtual int svc (void)
 スレッド実行関数

Protected 型

enum  Policy { ALL, FIFO, SKIP, NEW }

Protected メソッド

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, const cdrMemoryStream &data)
 BufferStatus から DataPortStatus への変換.
ReturnCode invokeListener (DataPortStatus::Enum status, const cdrMemoryStream &data)
 DataPortStatusに従ってリスナへ通知する関数を呼び出す。.
void onBufferWrite (const cdrMemoryStream &data)
 ON_BUFFER_WRITEのリスナへ通知する。.
void onBufferFull (const cdrMemoryStream &data)
 ON_BUFFER_FULLリスナへイベントを通知する。.
void onBufferWriteTimeout (const cdrMemoryStream &data)
 ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。.
void onBufferWriteOverwrite (const cdrMemoryStream &data)
 ON_BUFFER_OVERWRITEのリスナへ通知する。.
void onBufferRead (const cdrMemoryStream &data)
 ON_BUFFER_READのリスナへ通知する。.
void onSend (const cdrMemoryStream &data)
 ON_SENDのリスナへ通知する。.
void onReceived (const cdrMemoryStream &data)
 ON_RECEIVEDのリスナへ通知する。.
void onReceiverFull (const cdrMemoryStream &data)
 ON_RECEIVER_FULLのリスナへ通知する。.
void onReceiverTimeout (const cdrMemoryStream &data)
 ON_RECEIVER_TIMEOUTのリスナへ通知する。.
void onReceiverError (const cdrMemoryStream &data)
 ON_RECEIVER_ERRORのリスナへ通知する。.
void onSenderError ()
 ON_SENDER_ERRORのリスナへ通知する。.

説明

PublisherNew クラス.

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


型定義

typedef coil::Condition<Mutex> RTC::PublisherNew::Condition
typedef coil::Guard<coil::Mutex> RTC::PublisherNew::Guard
typedef coil::Mutex RTC::PublisherNew::Mutex

列挙型

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,
const 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
引数:
status BufferStatus
data cdrMemoryStream
戻り値:
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,
const cdrMemoryStream &  data 
) [protected]

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

引数:
status DataPortStatus
data cdrMemoryStream
戻り値:
リターンコード
virtual bool RTC::PublisherNew::isActive (  )  [virtual]

アクティブ化確認

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

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

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

void RTC::PublisherNew::onBufferFull ( const cdrMemoryStream &  data  )  [inline, protected]

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

引数:
data cdrMemoryStream

参照先 RTC::ON_BUFFER_FULL.

void RTC::PublisherNew::onBufferRead ( const cdrMemoryStream &  data  )  [inline, protected]

ON_BUFFER_READのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_BUFFER_READ.

void RTC::PublisherNew::onBufferWrite ( const cdrMemoryStream &  data  )  [inline, protected]

ON_BUFFER_WRITEのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_BUFFER_WRITE.

void RTC::PublisherNew::onBufferWriteOverwrite ( const cdrMemoryStream &  data  )  [inline, protected]

ON_BUFFER_OVERWRITEのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_BUFFER_OVERWRITE.

void RTC::PublisherNew::onBufferWriteTimeout ( const cdrMemoryStream &  data  )  [inline, protected]

ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_BUFFER_WRITE_TIMEOUT.

void RTC::PublisherNew::onReceived ( const cdrMemoryStream &  data  )  [inline, protected]

ON_RECEIVEDのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_RECEIVED.

void RTC::PublisherNew::onReceiverError ( const cdrMemoryStream &  data  )  [inline, protected]

ON_RECEIVER_ERRORのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_RECEIVER_ERROR.

void RTC::PublisherNew::onReceiverFull ( const cdrMemoryStream &  data  )  [inline, protected]

ON_RECEIVER_FULLのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_RECEIVER_FULL.

void RTC::PublisherNew::onReceiverTimeout ( const cdrMemoryStream &  data  )  [inline, protected]

ON_RECEIVER_TIMEOUTのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_RECEIVER_TIMEOUT.

void RTC::PublisherNew::onSend ( const cdrMemoryStream &  data  )  [inline, protected]

ON_SENDのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_SEND.

void RTC::PublisherNew::onSenderError (  )  [inline, protected]

ON_SENDER_ERRORのリスナへ通知する。.

引数:
data cdrMemoryStream

参照先 RTC::ON_SENDER_ERROR.

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 が返される。

引数:
buffer CDR buffer へのポインタ
戻り値:
ReturnCode PORT_OK 正常終了 INVALID_ARGS 引数に不正な値が含まれている
virtual ReturnCode RTC::PublisherNew::setConsumer ( InPortConsumer consumer  )  [virtual]

InPortコンシューマのセット.

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

引数:
consumer Consumer へのポインタ
戻り値:
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 を返す。

引数:
info ConnectorProfile をローカル化したオブジェクト 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 ( const 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を実装しています。

OpenRTMに対してFri Mar 11 00:00:51 2011に生成されました。  doxygen 1.6.3