OpenRTM-aist  1.2.1
公開メンバ関数 | 静的公開メンバ関数 | 公開変数類 | 全メンバ一覧
RTC::ConnectorListener クラスabstract

ConnectorListener クラス [詳解]

#include <ConnectorListener.h>

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

公開メンバ関数

virtual ~ConnectorListener ()
 デストラクタ [詳解]
 
virtual ReturnCode operator() (ConnectorInfo &info)=0
 仮想コールバックメソッド [詳解]
 

静的公開メンバ関数

static const char * toString (ConnectorListenerType type)
 ConnectorListenerType を文字列に変換 [詳解]
 

公開変数類

 USE_CONNLISTENER_STATUS
 

その他の継承メンバ

- 基底クラス RTC::ConnectorListenerStatus に属する継承公開型
enum  Enum { NO_CHANGE = 0, INFO_CHANGED = 1 << 0, DATA_CHANGED = 1 << 1, BOTH_CHANGED = INFO_CHANGED | DATA_CHANGED }
 

詳解

ConnectorListener クラス

データポートの 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:

構築子と解体子

virtual RTC::ConnectorListener::~ConnectorListener ( )
virtual

デストラクタ

関数詳解

virtual ReturnCode RTC::ConnectorListener::operator() ( ConnectorInfo info)
pure virtual

仮想コールバックメソッド

データポートの Connector において発生する各種イベントに対するコー ルバックメソッド

static const char* RTC::ConnectorListener::toString ( ConnectorListenerType  type)
inlinestatic

ConnectorListenerType を文字列に変換

ConnectorListenerType を文字列に変換する

引数
type変換対象 ConnectorListenerType
戻り値
文字列変換結果

参照先 RTC::CONNECTOR_LISTENER_NUM.

メンバ詳解

RTC::ConnectorListener::USE_CONNLISTENER_STATUS

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