OpenRTM-aist 2.0.2
|
ConnectorDataListener クラス [詳解]
#include <ConnectorListener.h>
公開メンバ関数 | |
virtual | ~ConnectorDataListener () |
デストラクタ | |
virtual ReturnCode | operator() (ConnectorInfo &info, ByteData &data, const std::string &marshalingtype)=0 |
仮想コールバックメソッド | |
静的公開メンバ関数 | |
static const char * | toString (ConnectorDataListenerType type) |
ConnectorDataListenerType を文字列に変換 | |
公開変数類 | |
USE_CONNLISTENER_STATUS | |
その他の継承メンバ | |
![]() | |
enum | Enum { NO_CHANGE = 0 , INFO_CHANGED = 1 << 0 , DATA_CHANGED = 1 << 1 , BOTH_CHANGED = INFO_CHANGED | DATA_CHANGED } |
データポートの Connector において発生する各種イベントに対するコー ルバックを実現するリスナクラスの基底クラス。
コアロジックがOutPortに対してデータ書き込み、InPort側でデータが取 得されるまでの間で発生する各種イベントをフックするコールバックを設 定することができる。なお、リスナークラスは2種類存在し、バッファフ ルや送信時のコールバックで、その時点で有効なデータをファンクタの引 数として受け取る ConnectorDataListener であり、もう一方はデータエ ンプティやバッファ読み込み時のタイムアウトなどデータが取得できない 場合などにコールされるファンクタの引数に何もとらならい ConnecotorListener がある。
ConnectorDataListener クラスによってデータが関連する動作をフックし たい場合、以下の例のように、このクラスを継承し、コネクタの情報とデー タを引数に取る以下のようなコールバックオブジェクトを定義し、データ ポートの適切なコールバック設定関数からコールバックオブジェクトをセッ トする必要がある。なお、Data Listener には、データとしてマーシャリ ング後のデータを引数に取る ConnectorDataListener と、データを特定 の型にアンマーシャルした後の値を引数に取る、 ConnectorDataListenerT がある。以下の例は、ConnectorDataListenerT の定義例である。
class MyDataListener : public ConnectorDataListenerT<RTC::TimedLong> { public: MyDataListener(const char* name) : m_name(name) {} virtual ~MyDataListener() {} virtual ReturnCode operator()(ConnectorInfo& info, TimedLong& data) { std::cout << "Data Listener: " << m_name << std::endl; std::cout << "Data: " << data.data << std::endl; std::cout << "Profile::name: " << info.name << std::endl; std::cout << "Profile::id: " << info.id << std::endl; std::cout << "Profile::properties: " << std::endl; std::cout << info.properties; }; std::string m_name; };
このようにして定義されたリスナクラスは、以下のようにデータポートに 対して、以下のようにセットされる。
RTC::ReturnCode_t ConsoleIn::onInitialize() { m_outOut. addConnectorDataListener(ConnectorDataListenerType::ON_BUFFER_WRITE, new MyDataListener("ON_BUFFER_WRITE")); :
第1引数の "ON_BUFFER_WRITE" は、コールバックをフックするポイントで あり、以下に列挙する値を取ることが可能である。データポートには、接 続時にデータの送受信方法について、インターフェース型、データフロー 型、サブスクリプション型等を設定することができるが、これらの設定に よりフックされるポイントは異なる。以下に、インターフェースがCORBA CDR型の場合のコールバック一覧を示す。
|
virtual |
デストラクタ
|
pure virtual |
仮想コールバックメソッド
データポートの Connector において発生する各種イベントに対するコー ルバックメソッド
RTC::ConnectorDataListenerT< DataType >, RTC::ConnectorDataListenerT< P0 >, RTC::EventBinder0< FSM, TOP, R >で実装されています。
|
inlinestatic |
ConnectorDataListenerType を文字列に変換
ConnectorDataListenerType を文字列に変換する
type | 変換対象 ConnectorDataListenerType |
RTC::ConnectorDataListener::USE_CONNLISTENER_STATUS |