OpenRTM-aist-Python 2.0.2
|
公開メンバ関数 | |
__init__ (self, length=RINGBUFFER_DEFAULT_LENGTH) | |
init (self, prop) | |
length (self, n=None) | |
reset (self) | |
wptr (self, n=0) | |
advanceWptr (self, n=1, unlock_enable=True) | |
put (self, value) | |
write (self, value, sec=-1, nsec=0) | |
writable (self) | |
full (self) | |
rptr (self, n=0) | |
advanceRptr (self, n=1, unlock_enable=True) | |
get (self) | |
read (self, sec=-1, nsec=0) | |
readable (self) | |
empty (self) | |
リングバッファ実装クラス
指定した長さのリング状バッファを持つバッファ実装クラス。 バッファ全体にデータが格納された場合、以降のデータは古いデータから 順次上書きされる。 従って、バッファ内には直近のバッファ長分のデータのみ保持される。
注)現在の実装では、一番最後に格納したデータのみバッファから読み出し可能
DataType | バッファに格納するデータ型 |
OpenRTM_aist.RingBuffer.RingBuffer.__init__ | ( | self, | |
length = RINGBUFFER_DEFAULT_LENGTH ) |
コンストラクタ
コンストラクタ 指定されたバッファ長でバッファを初期化する。
length | バッファ長 |
OpenRTM_aist.CdrRingBuffer.CdrRingBufferで再実装されています。
OpenRTM_aist.RingBuffer.RingBuffer.advanceRptr | ( | self, | |
n = 1, | |||
unlock_enable = True ) |
読み出しポインタを進める
現在の読み出し位置のポインタを n 個進める。
n | 読み出しポインタ + n の位置のポインタ |
unlock_enable | Trueの場合にバッファフルのブロックを解除する |
DataType* rptr(long int n = 0)
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.advanceWptr | ( | self, | |
n = 1, | |||
unlock_enable = True ) |
書込みポインタを進める
現在の書き込み位置のポインタを n 個進める。 書き込み可能な要素数以上の数値を指定した場合、PRECONDITION_NOT_MET を返す。
n | 書込みポインタ + n の位置のポインタ |
unlock_enable | Trueの場合にバッファエンプティのブロックを解除する |
ReturnCode advanceWptr(long int n = 1)
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.empty | ( | self | ) |
バッファemptyチェック
バッファemptyチェック用純粋仮想関数
bool empty(void) const
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.full | ( | self | ) |
バッファfullチェック
バッファfullチェック用純粋仮想関数
bool full(void) const
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.get | ( | self | ) |
バッファからデータを読み出す
バッファからデータを読みだす。読み出しポインタの位置は変更されない。
ReturnCode get(DataType& value)
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.init | ( | self, | |
prop ) |
バッファの設定
Properties で与えられるプロパティにより、 バッファの設定を初期化する。 使用できるオプションと意味は以下の通り
void init(const coil.Properties& prop)
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.length | ( | self, | |
n = None ) |
バッファ長を取得する
バッファ長を取得する。
self |
size_t length(void) const
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.put | ( | self, | |
value ) |
バッファにデータを書き込む
バッファにデータを書き込む。書き込みポインタの位置は変更されない。 この実装では常に BUFFER_OK を返す。
value | 書き込み対象データ |
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.read | ( | self, | |
sec = -1, | |||
nsec = 0 ) |
バッファから読み出す
バッファに格納されたデータを読み出す。
第1引数(sec)、第2引数(nsec)が指定されていない場合、バッファ空状 態での読み出しモード (readback, do_nothing, block) は init() で設 定されたモードに従う。
第1引数(sec) に引数が指定された場合は、init() で設定されたモード に関わらず、block モードとなり、バッファが空状態であれば指定時間 待ち、タイムアウトする。第2引数(nsec)は指定されない場合0として扱 われる。タイムアウト待ち中に、書込みスレッド側でバッファへ書込み があれば、ブロッキングは解除されデータが読みだされる。
読み出し時にバッファが空(empty)状態で、別のスレッドがblockモード で書込み待ちをしている場合、signalを発行して書込み側のブロッキン グが解除される。
value(list) | 読み出し対象データ |
sec | タイムアウト時間 sec (default -1: 無効) |
nsec | タイムアウト時間 nsec (default 0) |
ReturnCode read(DataType& value, long int sec = -1, long int nsec = 0)
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.readable | ( | self | ) |
バッファから読み出し可能な要素数
バッファから読み出し可能な要素数を返す。
size_t readable() const
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.reset | ( | self | ) |
バッファの状態をリセットする
バッファの読み出しポインタと書き込みポインタの位置をリセットする。 この実装では BUFFER_OK しか返さない。
ReturnCode reset()
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.rptr | ( | self, | |
n = 0 ) |
バッファの現在の読み出し要素のポインタ
バッファの現在の読み出し要素のポインタまたは、n個先のポインタを返す
n | 読み出しポインタ + n の位置のポインタ |
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.wptr | ( | self, | |
n = 0 ) |
バッファの現在の書込み要素のポインタ
バッファの現在の書込み要素のポインタまたは、n個先のポインタを返す
n | 書込みポインタ + n の位置のポインタ |
DataType* wptr(long int n = 0)
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.writable | ( | self | ) |
バッファに書込み可能な要素数
バッファに書込み可能な要素数を返す。
size_t writable() const
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。
OpenRTM_aist.RingBuffer.RingBuffer.write | ( | self, | |
value, | |||
sec = -1, | |||
nsec = 0 ) |
バッファに書き込む
引数で与えられたデータをバッファに書き込む。
第2引数(sec)、第3引数(nsec)が指定されていない場合、バッファフル 時の書込みモード (overwrite, do_nothing, block) は init() で設定 されたモードに従う。
第2引数(sec) に引数が指定された場合は、init() で設定されたモード に関わらず、block モードとなり、バッファがフル状態であれば指定時 間まち、タイムアウトする。第3引数(nsec)は指定されない場合0として 扱われる。タイムアウト待ち中に、読み出しスレッド側でバッファから 読み出せば、ブロッキングは解除されデータが書き込まれる。
書き込み時にバッファが空(empty)状態で、別のスレッドがblockモード で読み出し待ちをしている場合、signalを発行して読み出し側のブロッ キングが解除される。
value | 書き込み対象データ |
sec | タイムアウト時間 sec (default -1: 無効) |
nsec | タイムアウト時間 nsec (default 0) |
ReturnCode write(const DataType& value, long int sec = -1, long int nsec = 0)
OpenRTM_aist.BufferBase.BufferBaseを再実装しています。