OpenRTM-aist  1.2.1
クラス | 公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
RTC::OutPortConsumer クラスabstract

OutPortConsumer 抽象クラス [詳解]

#include <OutPortConsumer.h>

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

クラス

struct  subscribe
 Interface接続用Functor. [詳解]
 
struct  unsubscribe
 Interface接続解除用Functor. [詳解]
 

公開メンバ関数

virtual DATAPORTSTATUS_ENUM ~OutPortConsumer (void)
 デストラクタ [詳解]
 
virtual void init (coil::Properties &prop)=0
 設定初期化 [詳解]
 
virtual void setBuffer (CdrBufferBase *buffer)=0
 バッファをセットする [詳解]
 
virtual void setListener (ConnectorInfo &info, ConnectorListeners *listeners)=0
 リスナを設定する。 [詳解]
 
virtual ReturnCode get (cdrMemoryStream &data)=0
 データを受信する [詳解]
 
virtual bool subscribeInterface (const SDOPackage::NVList &properties)=0
 データ受信通知への登録 [詳解]
 
virtual void unsubscribeInterface (const SDOPackage::NVList &properties)=0
 データ受信通知からの登録解除 [詳解]
 

限定公開変数類

Logger rtclog
 ロガーストリーム [詳解]
 

その他の継承メンバ

- 基底クラス RTC::DataPortStatus に属する継承公開型
enum  Enum {
  PORT_OK = 0, PORT_ERROR, BUFFER_ERROR, BUFFER_FULL,
  BUFFER_EMPTY, BUFFER_TIMEOUT, SEND_FULL, SEND_TIMEOUT,
  RECV_EMPTY, RECV_TIMEOUT, INVALID_ARGS, PRECONDITION_NOT_MET,
  CONNECTION_LOST, UNKNOWN_ERROR
}
 
- 基底クラス RTC::DataPortStatus に属する継承静的公開メンバ関数
static const char * toString (DataPortStatus::Enum status)
 DataPortStatus リターンコードを文字列に変換 [詳解]
 

詳解

OutPortConsumer 抽象クラス

OutPort の REQUIRED インターフェースを実装するための抽象基底クラス。 このサブクラスのオブジェクトは InPort に属し、pull 型のデータスト リームを実現する。InPort に対して新しいインターフェースを実装する 場合には、このクラスを継承し、以下の関数を実装する必要がある。

さらに、以下の仮想関数に、ConnectorProfile から必要とする情報を取 得するなど、接続を確立あるいは接続の切断を実行するために必要な処理 を実装しなければならない。

InPortOutPortConsumer のファクトリ管理クラスに対して利用可能 な OutPortConsumer を問合せ、提供可能なインターフェースタイプを外 部に宣言する。従って、InPort に対して REQUIRED インターフェース を提供する OutPortConsumer のサブクラスは、OutPortConsumerFactory にファクトリ関数を登録する必要がある。

RTC::OutPortConsumerFactory::instance().addFactory() を、

を与えて呼び出す必要がある。以下は、ファクトリへの登録と、それを初 期化関数とした例である。

extern "C"
{
  void OutPortCorbaCdrConsumerInit(void)
  {
    RTC::OutPortConsumerFactory&
                        factory(RTC::OutPortConsumerFactory::instance());
    factory.addFactory("corba_cdr",
                       coil::Creator<RTC::OutPortConsumer,
                                       RTC::OutPortCorbaCdrConsumer>,
                       coil::Destructor<RTC::OutPortConsumer,
                                          RTC::OutPortCorbaCdrConsumer>);
  }
};

この例のように、ファクトリへの登録を初期化関数として、extern "C" によりシンボルを参照可能にしておく。こうすることで、 OutPortConsumer を共有オブジェクト化 (DLL化) して動的ロード可能に し、プロバイダの型を動的に追加することが可能となる。

から
0.4.0

構築子と解体子

virtual DATAPORTSTATUS_ENUM RTC::OutPortConsumer::~OutPortConsumer ( void  )
inlinevirtual

デストラクタ

仮想デストラクタ。

関数詳解

virtual ReturnCode RTC::OutPortConsumer::get ( cdrMemoryStream &  data)
pure virtual

データを受信する

データ受信を実行するための純粋仮想関数。 具象クラスでは、それぞれの方法でリモートのOutPortからデータを 受信するロジックを実装する。 受信に関する状態に応じて以下の戻り値を返す。

引数
data受信データ
戻り値
PORT_OK 正常終了 BUFFER_TIMEOUT タイムアウトした RECV_EMPTY 取得先のバッファが空である。 CONNECTION_LOST 接続が切断された PORT_ERROR エラー UNKNOWN_ERROR 本来ありえないエラー

RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。

virtual void RTC::OutPortConsumer::init ( coil::Properties prop)
pure virtual

設定初期化

OutPortConsumerの各種設定を行う。実装クラスでは、与えられた Propertiesから必要な情報を取得して各種設定を行う。この init() 関 数は、OutPortProvider生成直後および、接続時にそれぞれ呼ばれる可 能性がある。したがって、この関数は複数回呼ばれることを想定して記 述されるべきである。

引数
prop設定情報

RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。

virtual void RTC::OutPortConsumer::setBuffer ( CdrBufferBase buffer)
pure virtual

バッファをセットする

OutPortConsumerがデータを取り出すバッファをセットする。 すでにセットされたバッファがある場合、以前のバッファへの ポインタに対して上書きされる。 OutPortProviderはバッファの所有権を仮定していないので、 バッファの削除はユーザの責任で行わなければならない。

引数
bufferOutPortProviderがデータを取り出すバッファへのポインタ

RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。

virtual void RTC::OutPortConsumer::setListener ( ConnectorInfo info,
ConnectorListeners listeners 
)
pure virtual

リスナを設定する。

OutPort はデータ送信処理における各種イベントに対して特定のリスナ オブジェクトをコールするコールバック機構を提供する。詳細は ConnectorListener.hConnectorDataListener, ConnectorListener 等を参照のこと。OutPortProvider のサブクラスでは、与えられたリス ナを適切なタイミングで呼び出すべきである。ただし、すべてのリスナ を呼び出す必要はない。

引数
info接続情報
listenersリスナオブジェクト

RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。

virtual bool RTC::OutPortConsumer::subscribeInterface ( const SDOPackage::NVList &  properties)
pure virtual

データ受信通知への登録

指定されたプロパティ情報に基づいて、データ受信通知に登録するための 純粋仮想関数。

引数
properties登録用プロパティ
戻り値
登録処理結果(登録成功:true、登録失敗:false)

RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。

参照元 RTC::OutPortConsumer::subscribe::operator()().

virtual void RTC::OutPortConsumer::unsubscribeInterface ( const SDOPackage::NVList &  properties)
pure virtual

データ受信通知からの登録解除

データ受信通知からの登録を解除するための純粋仮想関数。

引数
properties登録解除用プロパティ
戻り値
登録解除処理結果(登録解除成功:true、登録解除失敗:false)

RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。

参照元 RTC::OutPortConsumer::unsubscribe::operator()().

メンバ詳解

Logger RTC::OutPortConsumer::rtclog
mutableprotected

ロガーストリーム


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