クラス OpenRTM_aist.RingBuffer.RingBuffer

リングバッファ実装クラス [詳細]

OpenRTM_aist.RingBuffer.RingBufferに対する継承グラフ
OpenRTM_aist.BufferBase.BufferBase OpenRTM_aist.BufferStatus.BufferStatus OpenRTM_aist.CdrRingBuffer.CdrRingBuffer

すべてのメンバ一覧

Public メソッド

def __init__
 コンストラクタ
def init
 バッファの設定
def length
 バッファ長を取得する
def reset
 バッファの状態をリセットする
def wptr
 バッファの現在の書込み要素のポインタ
def advanceWptr
 書込みポインタを進める
def put
 バッファにデータを書き込む
def write
 バッファに書き込む
def writable
 バッファに書込み可能な要素数
def full
 バッファfullチェック
def rptr
 バッファの現在の読み出し要素のポインタ
def advanceRptr
 読み出しポインタを進める
def get
 バッファからデータを読み出す
def read
 バッファから読み出す
def readable
 バッファから読み出し可能な要素数
def empty
 バッファemptyチェック

説明

リングバッファ実装クラス

指定した長さのリング状バッファを持つバッファ実装クラス。 バッファ全体にデータが格納された場合、以降のデータは古いデータから 順次上書きされる。 従って、バッファ内には直近のバッファ長分のデータのみ保持される。

注)現在の実装では、一番最後に格納したデータのみバッファから読み出し可能

引数:
DataType バッファに格納するデータ型
から:
0.4.0

メソッド

def OpenRTM_aist.RingBuffer.RingBuffer.__init__ (   self,
  length = RINGBUFFER_DEFAULT_LENGTH 
)

コンストラクタ

コンストラクタ 指定されたバッファ長でバッファを初期化する。

引数:
length バッファ長
def OpenRTM_aist.RingBuffer.RingBuffer.advanceRptr (   self,
  n = 1 
)

読み出しポインタを進める

現在の読み出し位置のポインタを n 個進める。

引数:
n 読み出しポインタ + n の位置のポインタ
戻り値:
BUFFER_OK: 正常終了 BUFFER_ERROR: 異常終了

DataType* rptr(long int n = 0)

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

def OpenRTM_aist.RingBuffer.RingBuffer.advanceWptr (   self,
  n = 1 
)

書込みポインタを進める

現在の書き込み位置のポインタを n 個進める。 書き込み可能な要素数以上の数値を指定した場合、PRECONDITION_NOT_MET を返す。

引数:
n 書込みポインタ + n の位置のポインタ
戻り値:
BUFFER_OK: 正常終了 PRECONDITION_NOT_MET: n > writable()

ReturnCode advanceWptr(long int n = 1)

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

def OpenRTM_aist.RingBuffer.RingBuffer.empty (   self  ) 

バッファemptyチェック

バッファemptyチェック用純粋仮想関数

戻り値:
emptyチェック結果(true:バッファempty,false:バッファデータあり)

bool empty(void) const

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

def OpenRTM_aist.RingBuffer.RingBuffer.full (   self  ) 

バッファfullチェック

バッファfullチェック用純粋仮想関数

戻り値:
fullチェック結果(true:バッファfull,false:バッファ空きあり)

bool full(void) const

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

def OpenRTM_aist.RingBuffer.RingBuffer.get (   self,
  value = None 
)

バッファからデータを読み出す

バッファからデータを読みだす。読み出しポインタの位置は変更されない。

引数:
value 読み出しデータ
戻り値:
BUFFER_OK: 正常終了 BUFFER_ERROR: 異常終了

ReturnCode get(DataType& value)

def OpenRTM_aist.RingBuffer.RingBuffer.init (   self,
  prop 
)

バッファの設定

Properties で与えられるプロパティにより、 バッファの設定を初期化する。 使用できるオプションと意味は以下の通り

  • buffer.length: バッファの長さ。自然数以外の数値が指定されても無視される。す でにバッファが使用状態でも、長さが再設定されたのち、すべての ポインタが初期化される。
  • buffer.write.full_policy: 上書きするかどうかのポリシー。 overwrite (上書き), do_nothing (何もしない), block (ブロックする) block を指定した場合、次の timeout 値を指定すれば、指定時間後 書き込み不可能であればタイムアウトする。 デフォルトは overwrite (上書き)。
  • buffer.write.timeout: タイムアウト時間を [sec] で指定する。デフォルトは 1.0 [sec]。 1 sec -> 1.0, 1 ms -> 0.001, タイムアウトしない -> 0.0
  • buffer.read.empty_policy: バッファが空のときの読み出しポリシー。 readback (最後の要素), do_nothing (何もしない), block (ブロックする) block を指定した場合、次の timeout 値を指定すれば、指定時間後 読み出し不可能であればタイムアウトする。 デフォルトは readback (最後の要素)。
  • buffer.read.timeout: タイムアウト時間 [sec] で指定する。デフォルトは 1.0 [sec]。 1sec -> 1.0, 1ms -> 0.001, タイムアウトしない -> 0.0

void init(const coil.Properties& prop)

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

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 書き込み対象データ
戻り値:
BUFFER_OK: 正常終了 BUFFER_ERROR: 異常終了

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

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)
戻り値:
BUFFER_OK 正常終了 BUFFER_EMPTY バッファがフル状態 TIMEOUT 書込みがタイムアウトした PRECONDITION_NOT_MET 設定異常

ReturnCode read(DataType& value, long int sec = -1, long int nsec = 0)

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

def OpenRTM_aist.RingBuffer.RingBuffer.readable (   self  ) 

バッファから読み出し可能な要素数

バッファから読み出し可能な要素数を返す。

戻り値:
読み出し可能な要素数
BUFFER_OK: 正常終了 BUFFER_ERROR: 異常終了

size_t readable() const

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

def OpenRTM_aist.RingBuffer.RingBuffer.reset (   self  ) 

バッファの状態をリセットする

バッファの読み出しポインタと書き込みポインタの位置をリセットする。 この実装では BUFFER_OK しか返さない。

戻り値:
BUFFER_OK: 正常終了 NOT_SUPPORTED: リセット不可能 BUFFER_ERROR: 異常終了

ReturnCode reset()

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

def OpenRTM_aist.RingBuffer.RingBuffer.rptr (   self,
  n = 0 
)

バッファの現在の読み出し要素のポインタ

バッファの現在の読み出し要素のポインタまたは、n個先のポインタを返す

引数:
n 読み出しポインタ + n の位置のポインタ
戻り値:
読み出し位置のポインタ

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

def OpenRTM_aist.RingBuffer.RingBuffer.wptr (   self,
  n = 0 
)

バッファの現在の書込み要素のポインタ

バッファの現在の書込み要素のポインタまたは、n個先のポインタを返す

引数:
n 書込みポインタ + n の位置のポインタ
戻り値:
書込み位置のポインタ

DataType* wptr(long int n = 0)

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

def OpenRTM_aist.RingBuffer.RingBuffer.writable (   self  ) 

バッファに書込み可能な要素数

バッファに書込み可能な要素数を返す。

戻り値:
書き込み可能な要素数

size_t writable() const

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。

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)
戻り値:
BUFFER_OK 正常終了 BUFFER_FULL バッファがフル状態 TIMEOUT 書込みがタイムアウトした PRECONDITION_NOT_MET 設定異常

ReturnCode write(const DataType& value, long int sec = -1, long int nsec = 0)

OpenRTM_aist.BufferBase.BufferBaseを再定義しています。


このクラスの説明は次のファイルから生成されました:
OpenRTM-aist-1.1.0-Pythonに対してMon Mar 2 14:14:09 2015に生成されました。  doxygen 1.6.3