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