#include <InPort.h>
Public メソッド | |
DATAPORTSTATUS_ENUM | InPort (const char *name, DataType &value, int bufsize=64, bool read_block=false, bool write_block=false, int read_timeout=0, int write_timeout=0) |
コンストラクタ | |
virtual | ~InPort (void) |
デストラクタ | |
virtual const char * | name () |
ポート名称を取得する。 | |
virtual bool | isNew () |
最新データが存在するか確認する | |
virtual bool | isEmpty () |
バッファが空かどうか確認する | |
bool | read () |
DataPort から値を読み出す. | |
virtual void | update () |
バインドされた T 型の変数に InPort バッファの最新値を読み込む | |
void | operator>> (DataType &rhs) |
T 型のデータへ InPort の最新値データを読み込む. | |
void | setOnRead (OnRead< DataType > *on_read) |
InPort バッファへデータ読み込み時のコールバックの設定. | |
void | setOnReadConvert (OnReadConvert< DataType > *on_rconvert) |
InPort バッファへデータ読み出し時のコールバックの設定. |
InPort テンプレートクラス.
InPort の実装である InPort<T> のテンプレートクラス。 <T> はBasicDataType.idl にて定義されている型で、メンバとして Time 型の tm , および T型の data を持つ構造体でなくてはならない。 InPort は内部にリングバッファを持ち、外部から送信されたデータを順次 このリングバッファに格納する。リングバッファのサイズはデフォルトで64と なっているが、コンストラクタ引数によりサイズを指定することができる。 データはフラグによって未読、既読状態が管理され、isNew(), write(), read(), isFull(), isEmpty() 等のメソッドによりハンドリングすることができる。
OnRead系コールバック (読み出しに起因するイベントによりコールされる)
OnBuffer系コールバック (バッファに起因するイベントによりコールされる)
OnConnect系コールバック (接続に起因するイベントによりコールされる)
OnReceive系コールバック (送信側に起因するイベントによりコールされる)
OnReceive系コールバック (受信側に起因するイベントによりコールされる)
DATAPORTSTATUS_ENUM RTC::InPort< DataType >::InPort | ( | const char * | name, | |
DataType & | value, | |||
int | bufsize = 64 , |
|||
bool | read_block = false , |
|||
bool | write_block = false , |
|||
int | read_timeout = 0 , |
|||
int | write_timeout = 0 | |||
) | [inline] |
コンストラクタ
コンストラクタ。 パラメータとして与えられる T 型の変数にバインドされる。
name | InPort 名。InPortBase:name() により参照される。 | |
value | この InPort にバインドされる T 型の変数 | |
bufsize | InPort 内部のリングバッファのバッファ長(デフォルト値:64) | |
read_block | 読込ブロックフラグ。 データ読込時に未読データがない場合、次のデータ受信までブロックする かどうかを設定(デフォルト値:false) | |
write_block | 書込ブロックフラグ。 データ書込時にバッファがフルであった場合、バッファに空きができる までブロックするかどうかを設定(デフォルト値:false) | |
read_timeout | 読込ブロックを指定していない場合の、データ読取タイム アウト時間(ミリ秒)(デフォルト値:0) | |
write_timeout | 書込ブロックを指定していない場合の、データ書込タイム アウト時間(ミリ秒)(デフォルト値:0) |
virtual RTC::InPort< DataType >::~InPort | ( | void | ) | [inline, virtual] |
デストラクタ
デストラクタ。
virtual bool RTC::InPort< DataType >::isEmpty | ( | void | ) | [inline, virtual] |
バッファが空かどうか確認する
InPortのバッファが空かどうかを bool 値で返す。 空の場合は true, 未読データがある場合は false を返す。
参照先 RTC::InPortBase::m_connectors, RTC::PortBase::m_connectorsMutex, RTC_DEBUG, と RTC_TRACE.
virtual bool RTC::InPort< DataType >::isNew | ( | ) | [inline, virtual] |
最新データが存在するか確認する
InPortに未読の最新データが到着しているかをbool値で返す。 InPortが未接続の場合、および接続コネクタのバッファがEmpty の場合にはfalseを返す。
参照先 RTC::InPortBase::m_connectors, RTC::PortBase::m_connectorsMutex, RTC_DEBUG, と RTC_TRACE.
virtual const char* RTC::InPort< DataType >::name | ( | ) | [inline, virtual] |
ポート名称を取得する。
ポート名称を取得する。
void RTC::InPort< DataType >::operator>> | ( | DataType & | rhs | ) | [inline] |
bool RTC::InPort< DataType >::read | ( | ) | [inline, virtual] |
DataPort から値を読み出す.
InPortに書き込まれたデータを読みだす。接続数が0、またはバッファに データが書き込まれていない状態で読みだした場合の戻り値は不定である。 バッファが空の状態のとき、 事前に設定されたモード (readback, do_nothing, block) に応じて、 以下のような動作をする。
バッファが空の状態では、InPortにバインドされた変数の値が返される。 したがって、初回読み出し時には不定値を返す可能性がある。 この関数を利用する際には、
ことが望ましい。
各コールバック関数は以下のように呼び出される。
RTC::InPortBaseを実装しています。
参照先 RTC::DataPortStatus::BUFFER_EMPTY, RTC::DataPortStatus::BUFFER_TIMEOUT, RTC::InPortBase::m_connectors, RTC::PortBase::m_connectorsMutex, RTC::DataPortStatus::PORT_OK, RTC_DEBUG, RTC_ERROR, RTC_TRACE, と RTC_WARN.
参照元 RTC::InPort< DataType >::operator>>(), と RTC::InPort< DataType >::update().
void RTC::InPort< DataType >::setOnRead | ( | OnRead< DataType > * | on_read | ) | [inline] |
void RTC::InPort< DataType >::setOnReadConvert | ( | OnReadConvert< DataType > * | on_rconvert | ) | [inline] |
InPort バッファへデータ読み出し時のコールバックの設定.
InPort が持つバッファからデータが読み出される際に呼ばれるコールバック オブジェクトを設定する。コールバックオブジェクトの戻り値がread()メソッド の呼出結果となる。
on_rconvert | OnReadConvert<DataType>型のオブジェクト |
virtual void RTC::InPort< DataType >::update | ( | void | ) | [inline, virtual] |