OpenRTM-aist-Python 2.0.2
|
公開メンバ関数 | |
toString (status) | |
データポートの Connector において発生する各種イベントに対するコー ルバックを実現するリスナクラスの基底クラス。
コアロジックがOutPortに対してデータ書き込み、InPort側でデータが取 得されるまでの間で発生する各種イベントをフックするコールバックを設 定することができる。なお、リスナークラスは2種類存在し、バッファフ ルや送信時のコールバックで、その時点で有効なデータをファンクタの引 数として受け取る ConnectorDataListener であり、もう一方はデータエ ンプティやバッファ読み込み時のタイムアウトなどデータが取得できない 場合などにコールされるファンクタの引数に何もとらならい ConnecotorListener がある。
ConnectorListener クラスによって関連する動作をフックしたい場合、以 下の例のように、このクラスを継承し、コネクタの情報を引数に取る以下 のようなコールバックオブジェクトを定義し、データポートの適切なコー ルバック設定関数からコールバックオブジェクトをセットする必要がある。
class MyListener : public ConnectorListener { public: MyListener(const char* name) : m_name(name) {} virtual ~MyListener() {} virtual ReturnCode operator()(ConnectorInfo& info) { std.cout << "Data Listener: " << m_name << 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. addConnectorListener(ON_BUFFER_EMPTY, new MyListener("ON_BUFFER_EMPTY")); :
第1引数の "ON_BUFFER_EMPTY" は、コールバックをフックするポイントで あり、以下に列挙する値を取ることが可能である。データポートには、接 続時にデータの送受信方法について、インターフェース型、データフロー 型、サブスクリプション型等を設定することができるが、これらの設定に よりフックされるポイントは異なる。以下に、インターフェースがCORBA CDR型の場合のコールバック一覧を示す。
OutPort:
複数の ConnectorListener を保持し管理するクラス。
OpenRTM_aist.ConnectorListener.ConnectorListener.toString | ( | status | ) |
ConnectorListenerType を文字列に変換
ConnectorListenerType を文字列に変換する
type | 変換対象 ConnectorListenerType |