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

ConnectorDataListener クラス [詳解]

#include <ConnectorListener.h>

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

公開メンバ関数

virtual ~ConnectorDataListener ()
 デストラクタ
 
virtual ReturnCode operator() (ConnectorInfo &info, ByteData &data, const std::string &marshalingtype)=0
 仮想コールバックメソッド
 

静的公開メンバ関数

static const char * toString (ConnectorDataListenerType type)
 ConnectorDataListenerType を文字列に変換
 

公開変数類

 USE_CONNLISTENER_STATUS
 

その他の継承メンバ

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

詳解

ConnectorDataListener クラス

データポートの 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型の場合のコールバック一覧を示す。

OutPort:

  • Push型: Subscription Typeによりさらにイベントの種類が分かれる。
    • Flush: Flush型にはバッファがないため ON_BUFFER 系のイベントは発生しない
      • ON_SEND
      • ON_RECEIVED
      • ON_RECEIVER_FULL
      • ON_RECEIVER_TIMEOUT
      • ON_RECEIVER_ERROR
    • New型
      • ON_BUFFER_WRITE
      • ON_BUFFER_FULL
      • ON_BUFFER_WRITE_TIMEOUT
      • ON_BUFFER_OVERWRITE
      • ON_BUFFER_READ
      • ON_SEND
      • ON_RECEIVED
      • ON_RECEIVER_FULL
      • ON_RECEIVER_TIMEOUT
      • ON_RECEIVER_ERROR
    • Periodic型
      • ON_BUFFER_WRITE
      • ON_BUFFER_FULL
      • ON_BUFFER_WRITE_TIMEOUT
      • ON_BUFFER_READ
      • ON_SEND
      • ON_RECEIVED
      • ON_RECEIVER_FULL
      • ON_RECEIVER_TIMEOUT
      • ON_RECEIVER_ERROR
  • Pull型
    • ON_BUFFER_WRITE
    • ON_BUFFER_FULL
    • ON_BUFFER_WRITE_TIMEOUT
    • ON_BUFFER_OVERWRITE
    • ON_BUFFER_READ
    • ON_SEND
    InPort:
  • Push型:
    • ON_BUFFER_WRITE
    • ON_BUFFER_FULL
    • ON_BUFFER_WRITE_TIMEOUT
    • ON_BUFFER_WRITE_OVERWRITE
    • ON_BUFFER_READ
    • ON_BUFFER_READ_TIMEOUT
    • ON_RECEIVED
    • ON_RECEIVER_FULL
    • ON_RECEIVER_TIMEOUT
    • ON_RECEIVER_ERROR
  • Pull型
    • ON_BUFFER_READ

構築子と解体子

◆ ~ConnectorDataListener()

virtual RTC::ConnectorDataListener::~ConnectorDataListener ( )
virtual

デストラクタ

関数詳解

◆ operator()()

virtual ReturnCode RTC::ConnectorDataListener::operator() ( ConnectorInfo & info,
ByteData & data,
const std::string & marshalingtype )
pure virtual

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

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

RTC::ConnectorDataListenerT< DataType >, RTC::ConnectorDataListenerT< P0 >, RTC::EventBinder0< FSM, TOP, R >で実装されています。

◆ toString()

static const char * RTC::ConnectorDataListener::toString ( ConnectorDataListenerType type)
inlinestatic

ConnectorDataListenerType を文字列に変換

ConnectorDataListenerType を文字列に変換する

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

参照先 RTC::CONNECTOR_DATA_LISTENER_NUM.

メンバ詳解

◆ USE_CONNLISTENER_STATUS

RTC::ConnectorDataListener::USE_CONNLISTENER_STATUS

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