OpenRTM-aist
1.2.1
|
OutPortConsumer 抽象クラス [詳解]
#include <OutPortConsumer.h>
クラス | |
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 |
ロガーストリーム [詳解] | |
その他の継承メンバ | |
![]() | |
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 } |
![]() | |
static const char * | toString (DataPortStatus::Enum status) |
DataPortStatus リターンコードを文字列に変換 [詳解] | |
OutPortConsumer 抽象クラス
OutPort の REQUIRED インターフェースを実装するための抽象基底クラス。 このサブクラスのオブジェクトは InPort に属し、pull 型のデータスト リームを実現する。InPort に対して新しいインターフェースを実装する 場合には、このクラスを継承し、以下の関数を実装する必要がある。
さらに、以下の仮想関数に、ConnectorProfile から必要とする情報を取 得するなど、接続を確立あるいは接続の切断を実行するために必要な処理 を実装しなければならない。
InPort は OutPortConsumer のファクトリ管理クラスに対して利用可能 な 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化) して動的ロード可能に し、プロバイダの型を動的に追加することが可能となる。
|
inlinevirtual |
デストラクタ
仮想デストラクタ。
|
pure virtual |
データを受信する
データ受信を実行するための純粋仮想関数。 具象クラスでは、それぞれの方法でリモートのOutPortからデータを 受信するロジックを実装する。 受信に関する状態に応じて以下の戻り値を返す。
data | 受信データ |
RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。
|
pure virtual |
設定初期化
OutPortConsumerの各種設定を行う。実装クラスでは、与えられた Propertiesから必要な情報を取得して各種設定を行う。この init() 関 数は、OutPortProvider生成直後および、接続時にそれぞれ呼ばれる可 能性がある。したがって、この関数は複数回呼ばれることを想定して記 述されるべきである。
prop | 設定情報 |
RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。
|
pure virtual |
バッファをセットする
OutPortConsumerがデータを取り出すバッファをセットする。 すでにセットされたバッファがある場合、以前のバッファへの ポインタに対して上書きされる。 OutPortProviderはバッファの所有権を仮定していないので、 バッファの削除はユーザの責任で行わなければならない。
buffer | OutPortProviderがデータを取り出すバッファへのポインタ |
RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。
|
pure virtual |
リスナを設定する。
OutPort はデータ送信処理における各種イベントに対して特定のリスナ オブジェクトをコールするコールバック機構を提供する。詳細は ConnectorListener.h の ConnectorDataListener, ConnectorListener 等を参照のこと。OutPortProvider のサブクラスでは、与えられたリス ナを適切なタイミングで呼び出すべきである。ただし、すべてのリスナ を呼び出す必要はない。
info | 接続情報 |
listeners | リスナオブジェクト |
RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。
|
pure virtual |
データ受信通知への登録
指定されたプロパティ情報に基づいて、データ受信通知に登録するための 純粋仮想関数。
properties | 登録用プロパティ |
RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。
|
pure virtual |
データ受信通知からの登録解除
データ受信通知からの登録を解除するための純粋仮想関数。
properties | 登録解除用プロパティ |
RTC::OutPortCorbaCdrConsumer, RTC::OutPortDirectConsumer, RTC::OutPortSHMConsumerで実装されています。
|
mutableprotected |
ロガーストリーム