jp.go.aist.rtm.RTC.buffer
クラス RingBuffer<DataType>

java.lang.Object
  上位を拡張 jp.go.aist.rtm.RTC.buffer.RingBuffer<DataType>
型パラメータ:
DataType - バッファに格納するデータ型
すべての実装されたインタフェース:
BufferBase<DataType>

public class RingBuffer<DataType>
extends java.lang.Object
implements BufferBase<DataType>

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

[@.ja 指定した長さのリング状バッファを持つバッファ実装クラス。 バッファ全体にデータが格納された場合、以降のデータは古いデータから 順次上書きされる。 従って、バッファ内には直近のバッファ長分のデータのみ保持される。 注)現在の実装では、一番最後に格納したデータのみバッファから読み出し可能}


入れ子のクラスの概要
protected  class RingBuffer.condition
          条件変数構造体
 
フィールドの概要
(package private)  int m_wcount
          書き込みカウント
 
コンストラクタの概要
RingBuffer()
          コンストラクタ
RingBuffer(int length)
          コンストラクタ 指定されたバッファ長でバッファを初期化する。
 
メソッドの概要
 ReturnCode advanceRptr()
          読み出しポインタを進める。
 ReturnCode advanceRptr(int n)
          読み出しポインタを進める。
 ReturnCode advanceWptr()
          書込みポインタを進める。
 ReturnCode advanceWptr(int n)
          書込みポインタを進める {@.ja 現在の書き込み位置のポインタを n 個進める。
 boolean empty()
          バッファemptyチェック
 boolean full()
          バッファfullチェック
 DataType get()
          バッファからデータを読み出す 読み出しポインタの位置は変更されない。
 ReturnCode get(DataRef<DataType> value)
          バッファからデータを読み出す。
 void init(Properties prop)
          バッファの設定。
 boolean isFull()
          バッファfullチェック
 int length()
          バッファ長を取得する。
 ReturnCode length(int n)
          バッファの長さをセットする。
 ReturnCode put(DataType data)
          バッファにデータを書き込む。
 ReturnCode read(DataRef<DataType> valueRef)
          バッファから読み出す {@.ja バッファに格納されたデータを読み出す。
 ReturnCode read(DataRef<DataType> valueRef, int sec)
          バッファから読み出す {@.ja バッファに格納されたデータを読み出す。
 ReturnCode read(DataRef<DataType> valueRef, int sec, int nsec)
          バッファから読み出す {@.ja バッファに格納されたデータを読み出す。
 int readable()
          バッファから読み出し可能な要素数。
 ReturnCode reset()
          バッファの状態をリセットする。
 DataType rptr()
          バッファの現在の読み出し要素のポインタ.
 DataType rptr(int n)
          バッファの現在の読み出し要素のポインタ.
 DataType wptr()
          バッファの現在の書込み要素のポインタ。
 DataType wptr(int n)
          バッファの現在の書込み要素のポインタ。
 int writable()
          バッファに書込み可能な要素数。
 ReturnCode write(DataType value)
          バッファに書き込む。
 ReturnCode write(DataType value, int sec)
          バッファに書き込む。
 ReturnCode write(DataType value, int sec, int nsec)
          バッファに書き込む。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

m_wcount

int m_wcount
書き込みカウント

コンストラクタの詳細

RingBuffer

public RingBuffer()
コンストラクタ


RingBuffer

public RingBuffer(int length)
コンストラクタ

指定されたバッファ長でバッファを初期化する。

パラメータ:
length - バッファ長
メソッドの詳細

length

public int length()
バッファ長を取得する。

定義:
インタフェース BufferBase<DataType> 内の length
戻り値:
バッファ長

length

public ReturnCode length(int n)
バッファの長さをセットする。

バッファ長を設定する。設定不可な場合はNOT_SUPPORTEDが返る。 この実装では BUFFER_OK しか返さない。

定義:
インタフェース BufferBase<DataType> 内の length
戻り値:
BUFFER_OK

write

public ReturnCode write(DataType value)
バッファに書き込む。

引数で与えられたデータをバッファに書き込む。 バッファフル時の書込みモード (overwrite, do_nothing, block) は init() で設定されたモードに従う。 書き込み時にバッファが空(empty)状態で、別のスレッドがblockモード で読み出し待ちをしている場合、signalを発行して読み出し側のブロッ キングが解除される。

定義:
インタフェース BufferBase<DataType> 内の write
パラメータ:
value - 書き込み対象データ
戻り値:
BUFFER_OK 正常終了 BUFFER_FULL バッファがフル状態 TIMEOUT 書込みがタイムアウトした PRECONDITION_NOT_MET 設定異常

write

public ReturnCode write(DataType value,
                        int sec)
バッファに書き込む。

引数で与えられたデータをバッファに書き込む。 第2引数(sec) に引数が指定された場合は、init() で設定されたモード に関わらず、block モードとなり、バッファがフル状態であれば指定時 間まち、タイムアウトする。 write(final DataType value, int sec, int nsec)の第3引数(nsec)が0の場合 と同等。 タイムアウト待ち中に、読み出しスレッド側でバッファから 読み出せば、ブロッキングは解除されデータが書き込まれる。 書き込み時にバッファが空(empty)状態で、別のスレッドがblockモード で読み出し待ちをしている場合、signalを発行して読み出し側のブロッ キングが解除される。

パラメータ:
value - 書き込み対象データ
sec - タイムアウト時間 sec
戻り値:
BUFFER_OK 正常終了 BUFFER_FULL バッファがフル状態 TIMEOUT 書込みがタイムアウトした PRECONDITION_NOT_MET 設定異常

write

public ReturnCode write(DataType value,
                        int sec,
                        int nsec)
バッファに書き込む。

引数で与えられたデータをバッファに書き込む。 第2引数(sec) に引数が指定された場合は、init() で設定されたモード に関わらず、block モードとなり、バッファがフル状態であれば指定時 間まち、タイムアウトする。第3引数(nsec)は指定されない場合0として 扱われる。タイムアウト待ち中に、読み出しスレッド側でバッファから 読み出せば、ブロッキングは解除されデータが書き込まれる。 書き込み時にバッファが空(empty)状態で、別のスレッドがblockモード で読み出し待ちをしている場合、signalを発行して読み出し側のブロッ キングが解除される。

定義:
インタフェース BufferBase<DataType> 内の write
パラメータ:
value - 書き込み対象データ
sec - タイムアウト時間 sec
nsec - タイムアウト時間 nsec
戻り値:
BUFFER_OK 正常終了 BUFFER_FULL バッファがフル状態 TIMEOUT 書込みがタイムアウトした PRECONDITION_NOT_MET 設定異常

read

public ReturnCode read(DataRef<DataType> valueRef)
バッファから読み出す

バッファに格納されたデータを読み出す。 バッファ空状態での読み出しモード (readback, do_nothing, block) は init() で設定されたモードに従う。 読み出し時にバッファが空(empty)状態で、別のスレッドがblockモード で書込み待ちをしている場合、signalを発行して書込み側のブロッキン グが解除される。

定義:
インタフェース BufferBase<DataType> 内の read
パラメータ:
valueRef - 読み出し対象データ
戻り値:
BUFFER_OK 正常終了 BUFFER_EMPTY バッファが空状態 TIMEOUT 書込みがタイムアウトした PRECONDITION_NOT_MET 設定異常

read

public ReturnCode read(DataRef<DataType> valueRef,
                       int sec)
バッファから読み出す

バッファに格納されたデータを読み出す。 タイムアウト待ち中に、書込みスレッド側でバッファへ書込み があれば、ブロッキングは解除されデータが読みだされる。 読み出し時にバッファが空(empty)状態で、別のスレッドがblockモード で書込み待ちをしている場合、signalを発行して書込み側のブロッキン グが解除される。

パラメータ:
valueRef - 読み出し対象データ
sec - タイムアウト時間 sec (default -1: 無効)
戻り値:
BUFFER_OK 正常終了 BUFFER_EMPTY バッファが空状態 TIMEOUT 書込みがタイムアウトした PRECONDITION_NOT_MET 設定異常

read

public ReturnCode read(DataRef<DataType> valueRef,
                       int sec,
                       int nsec)
バッファから読み出す

バッファに格納されたデータを読み出す。 第2引数(sec)、第3引数(nsec)が指定されていない場合、バッファ空状 態での読み出しモード (readback, do_nothing, block) は init() で設 定されたモードに従う。 第2引数(sec) に引数が指定された場合は、init() で設定されたモード に関わらず、block モードとなり、バッファが空状態であれば指定時間 待ち、タイムアウトする。第3引数(nsec)は指定されない場合0として扱 われる。タイムアウト待ち中に、書込みスレッド側でバッファへ書込み があれば、ブロッキングは解除されデータが読みだされる。 読み出し時にバッファが空(empty)状態で、別のスレッドがblockモード で書込み待ちをしている場合、signalを発行して書込み側のブロッキン グが解除される。

定義:
インタフェース BufferBase<DataType> 内の read
パラメータ:
valueRef - 読み出し対象データ
sec - タイムアウト時間 sec (default -1: 無効)
nsec - タイムアウト時間 nsec (default 0)
戻り値:
BUFFER_OK 正常終了 BUFFER_EMPTY バッファが空状態 TIMEOUT 書込みがタイムアウトした PRECONDITION_NOT_MET 設定異常

isFull

public boolean isFull()
バッファfullチェック

未実装

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

put

public ReturnCode put(DataType data)
バッファにデータを書き込む。

バッファにデータを書き込む。書き込みポインタの位置は変更されない。 この実装では常に BUFFER_OK を返す。

定義:
インタフェース BufferBase<DataType> 内の put
パラメータ:
data - 書き込み対象データ
戻り値:
BUFFER_OK: 正常終了 BUFFER_ERROR: 異常終了}

get

public DataType get()
バッファからデータを読み出す

読み出しポインタの位置は変更されない。

定義:
インタフェース BufferBase<DataType> 内の get
戻り値:
読み出しデータ

get

public ReturnCode get(DataRef<DataType> value)
バッファからデータを読み出す。

読み出しポインタの位置は変更されない。

定義:
インタフェース BufferBase<DataType> 内の get
パラメータ:
value - 読み出しデータ
戻り値:
BUFFER_OK: 正常終了 BUFFER_ERROR: 異常終了

init

public void init(Properties prop)
バッファの設定。

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

定義:
インタフェース BufferBase<DataType> 内の init
パラメータ:
prop - バッファを設定するためのプロパティ

reset

public ReturnCode reset()
バッファの状態をリセットする。

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

定義:
インタフェース BufferBase<DataType> 内の reset
戻り値:
BUFFER_OK: 正常終了 NOT_SUPPORTED: リセット不可能 BUFFER_ERROR: 異常終了

wptr

public DataType wptr(int n)
バッファの現在の書込み要素のポインタ。

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

定義:
インタフェース BufferBase<DataType> 内の wptr
パラメータ:
n - 書込みポインタ + n の位置のポインタ
戻り値:
書込み位置のオブジェクト

wptr

public DataType wptr()
バッファの現在の書込み要素のポインタ。

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

定義:
インタフェース BufferBase<DataType> 内の wptr
戻り値:
書込み位置のオブジェクト

advanceWptr

public ReturnCode advanceWptr(int n)
書込みポインタを進める

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

定義:
インタフェース BufferBase<DataType> 内の advanceWptr
パラメータ:
n - 書込みポインタ + n の位置のポインタ
戻り値:
BUFFER_OK: 正常終了 PRECONDITION_NOT_MET: n > writable()

advanceWptr

public ReturnCode advanceWptr()
書込みポインタを進める。

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

定義:
インタフェース BufferBase<DataType> 内の advanceWptr
戻り値:
BUFFER_OK: 正常終了 PRECONDITION_NOT_MET: n > writable()

writable

public int writable()
バッファに書込み可能な要素数。

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

定義:
インタフェース BufferBase<DataType> 内の writable
戻り値:
書き込み可能な要素数

full

public boolean full()
バッファfullチェック

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

定義:
インタフェース BufferBase<DataType> 内の full
戻り値:
fullチェック結果(true:バッファfull,false:バッファ空きあり)

rptr

public DataType rptr(int n)
バッファの現在の読み出し要素のポインタ.

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

定義:
インタフェース BufferBase<DataType> 内の rptr
パラメータ:
n - 読み出しポインタ + n の位置のポインタ
戻り値:
読み出し位置のポインタ

rptr

public DataType rptr()
バッファの現在の読み出し要素のポインタ.

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

定義:
インタフェース BufferBase<DataType> 内の rptr
戻り値:
読み出し位置のポインタ

advanceRptr

public ReturnCode advanceRptr(int n)
読み出しポインタを進める。

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

定義:
インタフェース BufferBase<DataType> 内の advanceRptr
パラメータ:
n - 読み出しポインタ + n の位置のポインタ
戻り値:
BUFFER_OK: 正常終了 BUFFER_ERROR: 異常終了

advanceRptr

public ReturnCode advanceRptr()
読み出しポインタを進める。

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

定義:
インタフェース BufferBase<DataType> 内の advanceRptr
戻り値:
BUFFER_OK: 正常終了 BUFFER_ERROR: 異常終了

readable

public int readable()
バッファから読み出し可能な要素数。

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

定義:
インタフェース BufferBase<DataType> 内の readable
戻り値:
読み出し可能な要素数

empty

public boolean empty()
バッファemptyチェック

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

定義:
インタフェース BufferBase<DataType> 内の empty
戻り値:
emptyチェック結果(true:バッファempty,false:バッファデータあり)