|
| InPort (const char *name, DataType &value) |
| コンストラクタ
|
|
| ~InPort () override |
| デストラクタ
|
|
virtual const char * | name () |
| ポート名称を取得する。
|
|
virtual bool | isNew (std::string name) |
| 最新データが存在するか確認する
|
|
virtual bool | isNew (coil::vstring &names) |
|
bool | isNew () override |
| 最新データが存在するか確認する
|
|
virtual bool | isEmpty (std::string name) |
| バッファが空かどうか確認する
|
|
virtual bool | isEmpty (coil::vstring &names) |
|
bool | isEmpty () override |
| バッファが空かどうか確認する
|
|
void | write (DataType &data) override |
| データの書き込み
|
|
bool | read (std::string name="") override |
| DataPort から値を読み出す
|
|
virtual void | update () |
| バインドされた T 型の変数に InPort バッファの最新値を読み込む
|
|
void | operator>> (DataType &rhs) |
| T 型のデータへ InPort の最新値データを読み込む
|
|
DataPortStatus | getStatus (int) |
| 特定のコネクタへの書き込みステータスを得る
|
|
DataPortStatusList | getStatusList () |
| 特定のコネクタへの書き込みステータスリストを得る
|
|
void | setOnRead (OnRead< DataType > *on_read) |
| InPort バッファへデータ読み込み時のコールバックの設定
|
|
void | setOnReadConvert (OnReadConvert< DataType > *on_rconvert) |
| InPort バッファへデータ読み出し時のコールバックの設定
|
|
| InPortBase (const char *name, const char *data_type) |
| コンストラクタ
|
|
| ~InPortBase () override |
| デストラクタ
|
|
virtual void | init (coil::Properties &prop) |
| プロパティの初期化
|
|
coil::Properties & | properties () |
| プロパティを取得する
|
|
const std::vector< InPortConnector * > & | connectors () |
| Connector を取得
|
|
ConnectorInfoList | getConnectorProfiles () |
| ConnectorProfile を取得
|
|
coil::vstring | getConnectorIds () |
| ConnectorId を取得
|
|
coil::vstring | getConnectorNames () |
| Connectorの名前を取得
|
|
InPortConnector * | getConnectorById (const char *id) |
| ConnectorProfileをIDで取得
|
|
InPortConnector * | getConnectorByName (const char *name) |
| ConnectorProfileを名前で取得
|
|
bool | getConnectorProfileById (const char *id, ConnectorInfo &prof) |
| ConnectorProfileをIDで取得
|
|
bool | getConnectorProfileByName (const char *name, ConnectorInfo &prof) |
| ConnectorProfileを名前で取得
|
|
void | activateInterfaces () override |
| InPortを activates する
|
|
void | deactivateInterfaces () override |
| 全ての Port のインターフェースを deactivates する
|
|
void | addConnectorDataListener (ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true) |
| ConnectorDataListener リスナを追加する
|
|
void | removeConnectorDataListener (ConnectorDataListenerType type, ConnectorDataListener *listener) |
| ConnectorDataListener リスナを削除する
|
|
void | addConnectorListener (ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true) |
| ConnectorListener リスナを追加する
|
|
void | removeConnectorListener (ConnectorListenerType type, ConnectorListener *listener) |
| ConnectorDataListener リスナを削除する
|
|
bool | isLittleEndian () |
| endian 設定を返す
|
|
ReturnCode_t | connect (ConnectorProfile &connector_profile) override |
| [CORBA interface] Port の接続を行う
|
|
virtual ConnectorListenersBase * | getListeners () |
| リスナホルダを取得する
|
|
ReturnCode_t | notify_connect (ConnectorProfile &connector_profile) override |
|
| PortBase (const char *name="") |
| コンストラクタ
|
|
| ~PortBase () override |
| デストラクタ
|
|
PortProfile * | get_port_profile () override |
| [CORBA interface] PortProfileを取得する
|
|
const PortProfile & | getPortProfile () const |
| PortProfile を取得する。
|
|
ConnectorProfileList * | get_connector_profiles () override |
| [CORBA interface] ConnectorProfileListを取得する
|
|
ConnectorProfile * | get_connector_profile (const char *connector_id) override |
| [CORBA interface] ConnectorProfile を取得する
|
|
ReturnCode_t | connect (ConnectorProfile &connector_profile) override |
| [CORBA interface] Port の接続を行う
|
|
ReturnCode_t | notify_connect (ConnectorProfile &connector_profile) override |
| [CORBA interface] Port の接続通知を行う
|
|
ReturnCode_t | disconnect (const char *connector_id) override |
| [CORBA interface] Port の接続を解除する
|
|
ReturnCode_t | notify_disconnect (const char *connector_id) override |
| [CORBA interface] Port の接続解除通知を行う
|
|
ReturnCode_t | disconnect_all () override |
| [CORBA interface] Port の全接続を解除する
|
|
void | setName (const char *name) |
| Port の名前を設定する
|
|
const char * | getName () const |
| Port の名前を取得する
|
|
const PortProfile & | getProfile () const |
| PortProfileを取得する
|
|
void | setPortRef (PortService_ptr port_ref) |
| Port のオブジェクト参照を設定する
|
|
PortService_ptr | getPortRef () const |
| Port のオブジェクト参照を取得する
|
|
void | setOwner (RTObject_ptr owner) |
| Port の owner の RTObject を指定する
|
|
void | setOnPublishInterfaces (ConnectionCallback *on_publish) |
| インターフェースを公開する際に呼ばれるコールバックをセットする
|
|
void | setOnSubscribeInterfaces (ConnectionCallback *on_subscribe) |
| インターフェースを取得する際に呼ばれるコールバックをセットする
|
|
void | setOnConnected (ConnectionCallback *on_connected) |
| 接続完了時に呼ばれるコールバックをセットする
|
|
void | setOnUnsubscribeInterfaces (ConnectionCallback *on_unsubscribe) |
| インターフェースを解放する際に呼ばれるコールバックをセットする
|
|
void | setOnDisconnected (ConnectionCallback *on_disconnected) |
| 接続解除に呼ばれるコールバックをセットする
|
|
void | setOnConnectionLost (ConnectionCallback *on_connection_lost) |
| ポートの接続がロストした場合に呼び出されるコールバックをセットする
|
|
void | setPortConnectListenerHolder (PortConnectListeners *portconnListeners) |
| PortConnectListeners のホルダをセットする
|
|
virtual DirectPortBase * | getDirectPort () |
| direct通信用ポートオブジェクト取得
|
|
|
void | initConnectorListeners () override |
| コネクタリスナの初期化
|
|
ReturnCode_t | publishInterfaces (ConnectorProfile &cprof) override |
| Interface情報を公開する
|
|
ReturnCode_t | subscribeInterfaces (const ConnectorProfile &cprof) override |
| Interfaceに接続する
|
|
void | unsubscribeInterfaces (const ConnectorProfile &connector_profile) override |
| Interfaceへの接続を解除する
|
|
void | initProviders () |
| InPort provider の初期化
|
|
void | initConsumers () |
| OutPort consumer の初期化
|
|
bool | checkEndian (const coil::Properties &prop, bool &littleEndian) |
| シリアライザのエンディアンをチェックする
|
|
InPortProvider * | createProvider (ConnectorProfile &cprof, coil::Properties &prop) |
| InPort provider の生成
|
|
OutPortConsumer * | createConsumer (const ConnectorProfile &cprof, coil::Properties &prop) |
| OutPort consumer の生成
|
|
InPortConnector * | createConnector (ConnectorProfile &cprof, coil::Properties &prop, InPortProvider *provider) |
| InPortPushConnector の生成
|
|
InPortConnector * | createConnector (const ConnectorProfile &cprof, coil::Properties &prop, OutPortConsumer *consumer) |
| InPortPullConnector の生成
|
|
OutPortBase * | getLocalOutPort (const ConnectorInfo &profile) |
| ローカルのピアOutPortを取得
|
|
virtual ReturnCode_t | connectNext (ConnectorProfile &connector_profile) |
| 次の Port に対して notify_connect() をコールする
|
|
virtual ReturnCode_t | disconnectNext (ConnectorProfile &cprof) |
| 次の Port に対して notify_disconnect() をコールする
|
|
virtual void | setConnectionLimit (int limit_value) |
| 接続の最大数を設定する。
|
|
virtual ReturnCode_t | _publishInterfaces () |
| Interface情報を公開する
|
|
bool | isExistingConnId (const char *id) |
| id が既存の ConnectorProfile のものかどうか判定する
|
|
ConnectorProfile | findConnProfile (const char *id) |
| id を持つ ConnectorProfile を探す
|
|
CORBA::Long | findConnProfileIndex (const char *id) |
| id を持つ ConnectorProfile を探す
|
|
void | updateConnectorProfile (const ConnectorProfile &connector_profile) |
| ConnectorProfile の追加もしくは更新
|
|
bool | eraseConnectorProfile (const char *id) |
| ConnectorProfile を削除する
|
|
bool | appendInterface (const char *instance_name, const char *type_name, PortInterfacePolarity pol) |
| PortInterfaceProfile に インターフェースを登録する
|
|
bool | deleteInterface (const char *name, PortInterfacePolarity pol) |
| PortInterfaceProfile からインターフェース登録を削除する
|
|
template<class ValueType > |
void | addProperty (const char *key, ValueType value) |
| PortProfile の properties に NameValue 値を追加する
|
|
void | appendProperty (const char *key, const char *value) |
| PortProfile の properties に NameValue 値を要素に追加する
|
|
void | updateConnectors () |
| 存在しないポートをdisconnectする。
|
|
bool | checkPorts (::RTC::PortServiceList &ports) |
| ポートの存在を確認する。
|
|
void | onNotifyConnect (const char *portname, RTC::ConnectorProfile &profile) |
|
void | onNotifyDisconnect (const char *portname, RTC::ConnectorProfile &profile) |
|
void | onUnsubscribeInterfaces (const char *portname, RTC::ConnectorProfile &profile) |
|
void | onPublishInterfaces (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret) |
|
void | onConnectNextport (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret) |
|
void | onSubscribeInterfaces (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret) |
|
void | onConnected (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret) |
|
void | onDisconnectNextport (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret) |
|
void | onDisconnected (const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret) |
|
bool | isExistingMarshalingType (coil::Properties &con_prop) |
| 指定のシリアライザが使用可能かを判定する
|
|
template<class DataType>
class RTC::InPort< DataType >
InPort テンプレートクラス
InPort の実装である InPort<T> のテンプレートクラス。 <T> はBasicDataType.idl にて定義されている型で、メンバとして Time 型の tm , および T型の data を持つ構造体でなくてはならない。 InPort は内部にリングバッファを持ち、外部から送信されたデータを順次 このリングバッファに格納する。 データはフラグによって未読、既読状態が管理され、isNew(), write(), read(), isFull(), isEmpty() 等のメソッドによりハンドリングすることができる。
OnRead系コールバック (読み出しに起因するイベントによりコールされる)
- void OnRead::operator(): InPort::read() を呼び出し読み出しを行う際にコールされる。
- DataType OnReadConvert::operator(DataType): InPort::read() を呼び出し、データをバッファから読みだす際に呼ばれ データの変換を行う。引数にはバッファから読み出された値が与えられ、 変換後のデータを戻り値として返す。この値がread()の返す値となる。
- から
- 0.2.0
template<class DataType >
bool RTC::InPort< DataType >::read |
( |
std::string | name = "" | ) |
|
|
inlineoverridevirtual |
DataPort から値を読み出す
InPortに書き込まれたデータを読みだす。接続数が0、またはバッファに データが書き込まれていない状態で読みだした場合の戻り値は不定である。 バッファが空の状態のとき、 事前に設定されたモード (readback, do_nothing, block) に応じて、 以下のような動作をする。
- readback: 最後の値を読みなおす。
- do_nothing: 何もしない
- block: ブロックする。タイムアウトが設定されている場合は、 タイムアウトするまで待つ。
バッファが空の状態では、InPortにバインドされた変数の値が返される。 したがって、初回読み出し時には不定値を返す可能性がある。 この関数を利用する際には、
- isNew(), isEmpty() と併用し、事前にバッファ状態をチェックする。
- 初回読み出し時に不定値を返さないようにバインド変数を事前に初期化する
- DataPortStatus read(DataType& data) 関数の利用を検討する。
ことが望ましい。
各コールバック関数は以下のように呼び出される。
- OnRead: read() 関数が呼ばれる際に必ず呼ばれる。
- OnReadConvert: データの読み出しが成功した場合、読みだしたデータを 引数としてOnReadConvertが呼び出され、戻り値をread()が戻り値 として返す。
- OnEmpty: バッファが空のためデータの読み出しに失敗した場合呼び出される。 OnEmpty の戻り値を read() の戻り値として返す。
- OnBufferTimeout: データフロー型がPush型の場合に、読み出し タイムアウトのためにデータの読み出しに失敗した場合に呼ばれる。
- OnRecvTimeout: データフロー型がPull型の場合に、読み出しタイムアウト のためにデータ読み出しに失敗した場合に呼ばれる。
- OnReadError: 上記以外の理由で読みだしに失敗した場合に呼ばれる。 理由としては、バッファ設定の不整合、例外の発生などが考えられる が通常は起こりえないためバグの可能性がある。
- 戻り値
- 読み出し結果(読み出し成功:true, 読み出し失敗:false)
RTC::InPortBaseを実装しています。
参照先 RTC::BUFFER_EMPTY, RTC::BUFFER_TIMEOUT, RTC::InPortConnector::getDirectData(), RTC::InPortBase::m_connectors, RTC::PortBase::m_connectorsMutex, RTC::InPort< DataType >::name(), RTC::PORT_OK, RTC::InPortConnector::read(), RTC_DEBUG, RTC_ERROR, RTC_TRACE, RTC_WARN.
参照元 RTC::InPort< DataType >::operator>>(), RTC::InPort< DataType >::update().