クラス テンプレート RTC::InPort< DataType >

InPort テンプレートクラス [詳細]

#include <InPort.h>

RTC::InPort< DataType >に対する継承グラフ

RTC::InPortBase RTC::PortBase RTC::DataPortStatus

すべてのメンバ一覧

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 ()
 バッファが空かどうか確認する
DataType read ()
 DataPort から値を読み出す
virtual void update ()
 バインドされた T 型の変数に InPort バッファの最新値を読み込む
void operator>> (DataType &rhs)
 T 型のデータへ InPort の最新値データを読み込む
void setOnWrite (OnWrite< DataType > *on_write)
 InPort バッファへデータ入力時のコールバックの設定
void setOnWriteConvert (OnWriteConvert< DataType > *on_wconvert)
 InPort バッファへデータ書き込み時のコールバックの設定
void setOnRead (OnRead< DataType > *on_read)
 InPort バッファへデータ読み込み時のコールバックの設定
void setOnReadConvert (OnReadConvert< DataType > *on_rconvert)
 InPort バッファへデータ読み出し時のコールバックの設定
void setOnOverflow (OnOverflow< DataType > *on_overflow)
 InPort バッファへバッファオーバーフロー時のコールバックの設定
void setOnUnderflow (OnUnderflow< DataType > *on_underflow)
 InPort バッファへバッファアンダーフロー時のコールバックの設定


説明

template<class DataType>
class RTC::InPort< DataType >

InPort テンプレートクラス

InPort の実装である InPort<T> のテンプレートクラス。 <T> はBasicDataType.idl にて定義されている型で、メンバとして Time 型の tm , および T型の data を持つ構造体でなくてはならない。 InPort は内部にリングバッファを持ち、外部から送信されたデータを順次 このリングバッファに格納する。リングバッファのサイズはデフォルトで64と なっているが、コンストラクタ引数によりサイズを指定することができる。 データはフラグによって未読、既読状態が管理され、isNew(), write(), read(), isFull(), isEmpty() 等のメソッドによりハンドリングすることができる。

から:
0.2.0

コンストラクタとデストラクタ

template<class DataType>
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)

template<class DataType>
virtual RTC::InPort< DataType >::~InPort ( void   )  [inline, virtual]

デストラクタ

デストラクタ。


関数

template<class DataType>
virtual const char* RTC::InPort< DataType >::name (  )  [inline, virtual]

ポート名称を取得する。

ポート名称を取得する。

戻り値:
ポート名称

template<class DataType>
virtual bool RTC::InPort< DataType >::isNew (  )  [inline, virtual]

最新データが存在するか確認する

InPortに未読の最新データが到着しているかをbool値で返す。 InPortが未接続の場合、および接続コネクタのバッファがEmpty の場合にはfalseを返す。

戻り値:
true 未読の最新データが存在する false 未接続またはバッファにデータが存在しない。

template<class DataType>
virtual bool RTC::InPort< DataType >::isEmpty ( void   )  [inline, virtual]

バッファが空かどうか確認する

InPortのバッファが空かどうかを bool 値で返す。 空の場合は true, 未読データがある場合は false を返す。

戻り値:
true バッファは空 false バッファに未読データがある

template<class DataType>
DataType RTC::InPort< DataType >::read (  )  [inline]

DataPort から値を読み出す

InPortに書き込まれたデータを読みだす。接続数が0、またはバッファに データが書き込まれていない状態で読みだした場合の戻り値は不定である。 バッファが空の状態のとき、 事前に設定されたモード (readback, do_nothing, block) に応じて、 以下のような動作をする。

バッファが空の状態では、InPortにバインドされた変数の値が返される。 したがって、初回読み出し時には不定値を返す可能性がある。 この関数を利用する際には、

ことが望ましい。

各コールバック関数は以下のように呼び出される。

戻り値:
読み出したデータ

template<class DataType>
virtual void RTC::InPort< DataType >::update ( void   )  [inline, virtual]

バインドされた T 型の変数に InPort バッファの最新値を読み込む

バインドされた T 型のデータに InPort の最新値を読み込む。 コンストラクタで T 型の変数と InPort がバインドされていなければならない。 このメソッドはポリモーフィックに使用される事を前提としているため、 型に依存しない引数、戻り値となっている。

template<class DataType>
void RTC::InPort< DataType >::operator>> ( DataType &  rhs  )  [inline]

T 型のデータへ InPort の最新値データを読み込む

InPort に設定されている最新データを読み込み、 指定されたデータ変数に設定する。

引数:
rhs InPort バッファから値を読み込む T 型変数

template<class DataType>
void RTC::InPort< DataType >::setOnWrite ( OnWrite< DataType > *  on_write  )  [inline]

InPort バッファへデータ入力時のコールバックの設定

InPort が持つバッファにデータがputされたときに呼ばれるコールバック オブジェクトを設定する。設定されるコールバックオブジェクトは InPort<DataType>::OnPutクラスを継承し、引数 const DataType& 、 戻り値 void の operator() 関数が実装されている必要がある。

struct MyOnPutCallback : public InPort<DataType> {
void operator()(const DataType data) {
処理
}
};
のようにコールバックオブジェクトを実装し、

m_inport.setOnPut(new MyOnPutCallback());
のようにコールバックオブジェクトをセットする。

引数:
on_write OnWrite<DataType>型のオブジェクト

template<class DataType>
void RTC::InPort< DataType >::setOnWriteConvert ( OnWriteConvert< DataType > *  on_wconvert  )  [inline]

InPort バッファへデータ書き込み時のコールバックの設定

InPort が持つバッファにデータ書き込まれる時に呼ばれるコールバック オブジェクトを設定する。バッファにはコールバックオブジェクトの 戻り値が設定される。

引数:
on_wconvert OnWriteConvert<DataType>型のオブジェクト

template<class DataType>
void RTC::InPort< DataType >::setOnRead ( OnRead< DataType > *  on_read  )  [inline]

InPort バッファへデータ読み込み時のコールバックの設定

InPort が持つバッファからデータが読み込まれる直前に呼ばれるコールバック オブジェクトを設定する。

引数:
on_read OnRead<DataType>型のオブジェクト

template<class DataType>
void RTC::InPort< DataType >::setOnReadConvert ( OnReadConvert< DataType > *  on_rconvert  )  [inline]

InPort バッファへデータ読み出し時のコールバックの設定

InPort が持つバッファからデータが読み出される際に呼ばれるコールバック オブジェクトを設定する。コールバックオブジェクトの戻り値がread()メソッド の呼出結果となる。

引数:
on_rconvert OnReadConvert<DataType>型のオブジェクト

template<class DataType>
void RTC::InPort< DataType >::setOnOverflow ( OnOverflow< DataType > *  on_overflow  )  [inline]

InPort バッファへバッファオーバーフロー時のコールバックの設定

InPort が持つバッファでバッファオーバーフローが検出された際に呼び出される コールバックオブジェクトを設定する。

引数:
on_overflow OnOverflow<DataType>型のオブジェクト

template<class DataType>
void RTC::InPort< DataType >::setOnUnderflow ( OnUnderflow< DataType > *  on_underflow  )  [inline]

InPort バッファへバッファアンダーフロー時のコールバックの設定

InPort が持つバッファでバッファアンダーフローが検出された際に呼び出される コールバックオブジェクトを設定する。

引数:
on_underflow OnUnderflow<DataType>型のオブジェクト


OpenRTMに対してSun May 24 14:08:26 2009に生成されました。  doxygen 1.5.3