OpenRTM-aist 2.0.2
|
#include <OutPortPushConnector.h>
公開メンバ関数 | |
OutPortPushConnector (ConnectorInfo info, InPortConsumer *consumer, ConnectorListenersBase *listeners, CdrBufferBase *buffer=nullptr) | |
コンストラクタ | |
~OutPortPushConnector () override | |
デストラクタ | |
DataPortStatus | write (RTC::ByteDataStreamBase *data) override |
データの書き込み | |
DataPortStatus | disconnect () override |
接続解除 | |
void | activate () override |
アクティブ化 | |
void | deactivate () override |
非アクティブ化 | |
CdrBufferBase * | getBuffer () override |
Buffer を取得する | |
void | unsubscribeInterface (const coil::Properties &prop) override |
コンシューマのインターフェースの登録を取り消す | |
![]() | |
OutPortConnector (ConnectorInfo &info, ConnectorListenersBase *listeners) | |
コンストラクタ | |
~OutPortConnector () override | |
デストラクタ | |
const ConnectorInfo & | profile () override |
Profile 取得 | |
const char * | id () override |
Connector ID 取得 | |
const char * | name () override |
Connector 名取得 | |
virtual void | setEndian (bool endian_type) |
endianタイプ設定 | |
virtual bool | isLittleEndian () |
endian 設定を返す | |
template<class DataType > | |
DataPortStatus | write (DataType &data) |
データ型の変換テンプレート | |
virtual BufferStatus | read (ByteData &data) |
bool | setInPort (InPortBase *directInPort) |
virtual void | setPullDirectMode () |
ダイレクト接続モードに設定 | |
virtual bool | pullDirectMode () |
ダイレクト接続モードかの判定 | |
![]() | |
virtual | ~ConnectorBase ()=default |
デストラクタ | |
限定公開メンバ関数 | |
virtual PublisherBase * | createPublisher (ConnectorInfo &info) |
Publisherの生成 | |
virtual CdrBufferBase * | createBuffer (ConnectorInfo &info) |
Bufferの生成 | |
void | onConnect () |
接続確立時にコールバックを呼ぶ | |
void | onDisconnect () |
接続切断時にコールバックを呼ぶ | |
その他の継承メンバ | |
![]() | |
Logger | rtclog |
ロガーストリーム | |
ConnectorInfo | m_profile |
Port の PortProfile | |
bool | m_littleEndian |
接続エンディアン | |
PortBase * | m_directInPort |
同一プロセス上のピアInPortのポインタ | |
ConnectorListenersBase * | m_listeners |
ConnectorListenrs への参照 | |
ConnectorListenersBase * | m_inPortListeners |
InPort 側の ConnectorListenrs への参照 | |
bool | m_directMode |
ダイレクト接続のフラグ Trueでダイレクト接続モード | |
std::string | m_marshaling_type |
シリアライザの名前 | |
ByteDataStreamBase * | m_cdr |
OutPort の push 型データフローのための Connector クラス。このオブ ジェクトは、接続時に dataflow_type に push が指定された場合、 OutPort によって生成・所有され、InPortPushConnector と対になって、 データポートの push 型のデータフローを実現する。一つの接続に対して、 一つのデータストリームを提供する唯一の Connector が対応する。 Connector は 接続時に生成される UUID 形式の ID により区別される。
OutPortPushConnector は以下の三つのオブジェクトを所有し管理する。
OutPort に書き込まれたデータは OutPortPushConnector::write() に渡 され、Connector は Publisher にデータを書き込む。Publisher はその 特性に従ってデータを Buffer から取得し InPortConsumer に対して push することで InPort にデータが転送される。
RTC::OutPortPushConnector::OutPortPushConnector | ( | ConnectorInfo | info, |
InPortConsumer * | consumer, | ||
ConnectorListenersBase * | listeners, | ||
CdrBufferBase * | buffer = nullptr ) |
コンストラクタ
OutPortPushConnector のコンストラクタはオブジェクト生成時に下記 を引数にとる。ConnectorInfo は接続情報を含み、この情報に従いパブ リッシャやバッファ等を生成する。InPort インターフェースに対する コンシューマオブジェクトへのポインタを取り、所有権を持つので、 OutPortPushConnector は InPortConsumer の解体責任を持つ。各種イ ベントに対するコールバック機構を提供する ConnectorListeners を持 ち、適切なタイミングでコールバックを呼び出す。データバッファがも し OutPortBase から提供される場合はそのポインタを取る。
info | ConnectorInfo |
consumer | InPortConsumer |
listeners | ConnectorListeners 型のリスナオブジェクトリスト |
buffer | CdrBufferBase 型のバッファ |
|
override |
デストラクタ
disconnect() が呼ばれ、consumer, publisher, buffer が解体・削除される。
|
overridevirtual |
|
protectedvirtual |
Bufferの生成
与えられた接続情報に基づきバッファを生成する。
info | 接続情報 |
|
protectedvirtual |
Publisherの生成
与えられた接続情報に基づきパブリッシャを生成する。
info | 接続情報 |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
protected |
接続確立時にコールバックを呼ぶ
|
protected |
接続切断時にコールバックを呼ぶ
|
overridevirtual |
|
overridevirtual |
データの書き込み
Publisherに対してデータを書き込み、これにより対応するInPortへデー タが転送される。正常終了した場合 PORT_OK が返される。それ以外の 場合、エラー値として、CONNECTION_LOST, BUFFER_FULL, BUFFER_ERROR, PORT_ERROR, BUFFER_TIMEOUT, PRECONDITION_NO_MET が 返される。
RTC::OutPortConnectorを実装しています。