メインページ | ネームスペース一覧 | クラス階層 | 構成 | Directories | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ

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

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

#include <InPort.h>

すべてのメンバ一覧

Public メソッド

 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)
 InPortAny クラスコンストラクタ.
virtual ~InPort ()
 InPortAny クラスデストラクタ.
virtual const char * name ()
bool write (const DataType &value)
 DataPort に値を書き込む.
DataType read ()
 DataPort から値を読み出す.
virtual void init (DataType &value)
 InPort 内のリングバッファの値を初期化.
void update ()
 バインドされた T 型の変数に InPort バッファの最新値を読み込む
void operator>> (DataType &rhs)
 T 型のデータへ InPort の最新値データを読み込む.
void operator<< (DataType &value)
void setOnWrite (OnWrite< DataType > *on_write)
 未読の新しいデータ数を取得する 未読の新しいデータを取得する 未読の新しいデータを逆順(新->古)で取得する InPort バッファにデータ入力時のコールバックの設定.
void setOnWriteConvert (OnWriteConvert< DataType > *on_wconvert)
void setOnRead (OnRead< DataType > *on_read)
void setOnReadConvert (OnReadConvert< DataType > *on_rconvert)
void setOnOverflow (OnOverflow< DataType > *on_overflow)
void setOnUnderflow (OnUnderflow< DataType > *on_underflow)


説明

template<class DataType, template< class DataType > class Buffer = RingBuffer>
class RTC::InPort< DataType, Buffer >

InPort テンプレートクラス.

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


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

template<class DataType, template< class DataType > class Buffer = RingBuffer>
RTC::InPort< DataType, Buffer >::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]
 

InPortAny クラスコンストラクタ.

InPortAny<T> クラスのコンストラクタ。 パラメータとして与えられる T 型の変数にバインドされる。

引数:
name InPort 名。InPortBase:name() により参照される。
value この InPort にバインドされる T 型の変数
bufsize InPort 内部のリングバッファのバッファ長

template<class DataType, template< class DataType > class Buffer = RingBuffer>
virtual RTC::InPort< DataType, Buffer >::~InPort  )  [inline, virtual]
 

InPortAny クラスデストラクタ.

InPortAny<T> クラスのデストラクタ。


関数

template<class DataType, template< class DataType > class Buffer = RingBuffer>
virtual void RTC::InPort< DataType, Buffer >::init DataType &  value  )  [inline, virtual]
 

InPort 内のリングバッファの値を初期化.

InPort 内のリングバッファの値を初期化する。

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

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::operator<< DataType &  value  )  [inline]
 

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::operator>> DataType &  rhs  )  [inline]
 

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

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

template<class DataType, template< class DataType > class Buffer = RingBuffer>
DataType RTC::InPort< DataType, Buffer >::read  )  [inline]
 

DataPort から値を読み出す.

DataPort から値を読み出す

  • コールバックファンクタ OnRead がセットされている場合、 DataPort が保持するバッファから読み出す前に OnRead が呼ばれる。
  • DataPort が保持するバッファがアンダーフローを検出できるバッファで、 かつ、読み出す際にバッファがアンダーフローを検出した場合、 コールバックファンクタ OnUnderflow が呼ばれる。
  • コールバックファンクタ OnReadConvert がセットされている場合、 バッファ書き込み時に、OnReadConvert の operator()() の戻り値が read()の戻り値となる。
  • setReadTimeout() により読み出し時のタイムアウトが設定されている場合、 バッファアンダーフロー状態が解除されるまでタイムアウト時間だけ待ち、 OnUnderflowがセットされていればこれを呼び出して戻る

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnOverflow OnOverflow< DataType > *  on_overflow  )  [inline]
 

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnRead OnRead< DataType > *  on_read  )  [inline]
 

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnReadConvert OnReadConvert< DataType > *  on_rconvert  )  [inline]
 

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnUnderflow OnUnderflow< DataType > *  on_underflow  )  [inline]
 

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::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());
のようにコールバックオブジェクトをセットする。

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::setOnWriteConvert OnWriteConvert< DataType > *  on_wconvert  )  [inline]
 

template<class DataType, template< class DataType > class Buffer = RingBuffer>
void RTC::InPort< DataType, Buffer >::update  )  [inline]
 

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

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

template<class DataType, template< class DataType > class Buffer = RingBuffer>
bool RTC::InPort< DataType, Buffer >::write const DataType &  value  )  [inline]
 

DataPort に値を書き込む.

DataPort に値を書き込む。

  • コールバックファンクタ OnWrite がセットされている場合、 InPort が保持するバッファに書き込む前に OnWrite が呼ばれる。
  • InPort が保持するバッファがオーバーフローを検出できるバッファであり、 かつ、書き込む際にバッファがオーバーフローを検出した場合、 コールバックファンクタ OnOverflow が呼ばれる。
  • コールバックファンクタ OnWriteConvert がセットされている場合、 バッファ書き込み時に、OnWriteConvert の operator()() の戻り値が バッファに書き込まれる。
  • setWriteTimeout() により書き込み時のタイムアウトが設定されている場合、 タイムアウト時間だけバッファフル状態が解除するのを待ち、 OnOverflowがセットされていればこれを呼び出して戻る。


このクラスの説明は次のファイルから生成されました:
OpenRTMに対してFri Oct 5 05:15:01 2007に生成されました。  doxygen 1.4.1