OpenRTM-aist 2.0.2
読み取り中…
検索中…
一致する文字列を見つけられません
RTC::ConnectorListener クラスabstract

ConnectorListener クラス [詳解]

#include <ConnectorListener.h>

RTC::ConnectorListener の継承関係図
RTC::ConnectorListener 連携図

公開メンバ関数

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(ConnectorListenerType::ON_BUFFER_EMPTY,
                             new MyListener("ON_BUFFER_EMPTY"));
   :

第1引数の "ON_BUFFER_EMPTY" は、コールバックをフックするポイントで あり、以下に列挙する値を取ることが可能である。データポートには、接 続時にデータの送受信方法について、インターフェース型、データフロー 型、サブスクリプション型等を設定することができるが、これらの設定に よりフックされるポイントは異なる。以下に、インターフェースがCORBA CDR型の場合のコールバック一覧を示す。

OutPort:

  • Push型: Subscription Typeによりさらにイベントの種類が分かれる。
    • Flush: Flush型にはバッファがないため ON_BUFFER 系のイベントは発生しない
      • ON_CONNECT
      • ON_DISCONNECT
    • New型
      • ON_CONNECT
      • ON_DISCONNECT
    • Periodic型
      • ON_BUFFER_EMPTY
      • ON_BUFFER_READ_TIMEOUT
      • ON_SENDER_EMPTY
      • ON_SENDER_ERROR
      • ON_CONNECT
      • ON_DISCONNECT
  • Pull型
    • ON_BUFFER_EMPTY
    • ON_BUFFER_READ_TIMEOUT
    • ON_SENDER_EMPTY
    • ON_SENDER_TIMEOUT
    • ON_SENDER_ERROR
    • ON_CONNECT
    • ON_DISCONNECT
    InPort:
  • Push型:
    • ON_BUFFER_EMPTY
    • ON_BUFFER_READ_TIMEOUT
    • ON_CONNECT
    • ON_DISCONNECT
  • Pull型
    • ON_CONNECT
    • ON_DISCONNECT

構築子と解体子

◆ ~ConnectorListener()

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

デストラクタ

関数詳解

◆ operator()()

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

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

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

RTC::EventConnListenerで実装されています。

◆ toString()

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

ConnectorListenerType を文字列に変換

ConnectorListenerType を文字列に変換する

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

参照先 RTC::CONNECTOR_LISTENER_NUM.

メンバ詳解

◆ USE_CONNLISTENER_STATUS

RTC::ConnectorListener::USE_CONNLISTENER_STATUS

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