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)
バッファに書き込む。
|
public RingBuffer()
public RingBuffer(int length)
指定されたバッファ長でバッファを初期化する。
length
- バッファ長
public int length()
length
インタフェース内 BufferBase<DataType>
public ReturnCode length(int n)
バッファ長を設定する。設定不可な場合はNOT_SUPPORTEDが返る。 この実装では BUFFER_OK しか返さない。
length
インタフェース内 BufferBase<DataType>
public ReturnCode write(DataType value)
引数で与えられたデータをバッファに書き込む。 バッファフル時の書込みモード (overwrite, do_nothing, block) は init() で設定されたモードに従う。 書き込み時にバッファが空(empty)状態で、別のスレッドがblockモード で読み出し待ちをしている場合、signalを発行して読み出し側のブロッ キングが解除される。
write
インタフェース内 BufferBase<DataType>
value
- 書き込み対象データ
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
public ReturnCode write(DataType value, int sec, int nsec)
引数で与えられたデータをバッファに書き込む。 第2引数(sec) に引数が指定された場合は、init() で設定されたモード に関わらず、block モードとなり、バッファがフル状態であれば指定時 間まち、タイムアウトする。第3引数(nsec)は指定されない場合0として 扱われる。タイムアウト待ち中に、読み出しスレッド側でバッファから 読み出せば、ブロッキングは解除されデータが書き込まれる。 書き込み時にバッファが空(empty)状態で、別のスレッドがblockモード で読み出し待ちをしている場合、signalを発行して読み出し側のブロッ キングが解除される。
write
インタフェース内 BufferBase<DataType>
value
- 書き込み対象データ
sec
- タイムアウト時間 sec
nsec
- タイムアウト時間 nsec
public ReturnCode read(DataRef<DataType> valueRef)
バッファに格納されたデータを読み出す。 バッファ空状態での読み出しモード (readback, do_nothing, block) は init() で設定されたモードに従う。 読み出し時にバッファが空(empty)状態で、別のスレッドがblockモード で書込み待ちをしている場合、signalを発行して書込み側のブロッキン グが解除される。
read
インタフェース内 BufferBase<DataType>
valueRef
- 読み出し対象データ
public ReturnCode read(DataRef<DataType> valueRef, int sec)
バッファに格納されたデータを読み出す。 タイムアウト待ち中に、書込みスレッド側でバッファへ書込み があれば、ブロッキングは解除されデータが読みだされる。 読み出し時にバッファが空(empty)状態で、別のスレッドがblockモード で書込み待ちをしている場合、signalを発行して書込み側のブロッキン グが解除される。
valueRef
- 読み出し対象データ
sec
- タイムアウト時間 sec (default -1: 無効)
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を発行して書込み側のブロッキン グが解除される。
read
インタフェース内 BufferBase<DataType>
valueRef
- 読み出し対象データ
sec
- タイムアウト時間 sec (default -1: 無効)
nsec
- タイムアウト時間 nsec (default 0)
public boolean isFull()
未実装
public ReturnCode put(DataType data)
バッファにデータを書き込む。書き込みポインタの位置は変更されない。 この実装では常に BUFFER_OK を返す。
put
インタフェース内 BufferBase<DataType>
data
- 書き込み対象データ
public DataType get()
読み出しポインタの位置は変更されない。
get
インタフェース内 BufferBase<DataType>
public ReturnCode get(DataRef<DataType> value)
読み出しポインタの位置は変更されない。
get
インタフェース内 BufferBase<DataType>
value
- 読み出しデータ
public void init(Properties prop)
Properties で与えられるプロパティにより、 バッファの設定を初期化する。 使用できるオプションと意味は以下の通り
init
インタフェース内 BufferBase<DataType>
prop
- バッファを設定するためのプロパティ
public ReturnCode reset()
バッファの読み出しポインタと書き込みポインタの位置をリセットする。 この実装では BUFFER_OK しか返さない。
reset
インタフェース内 BufferBase<DataType>
public DataType wptr(int n)
バッファの現在の書込み要素のポインタまたは、n個先のポインタを返す
wptr
インタフェース内 BufferBase<DataType>
n
- 書込みポインタ + n の位置のポインタ
public DataType wptr()
バッファの現在の書込み要素のポインタを返す
wptr
インタフェース内 BufferBase<DataType>
public ReturnCode advanceWptr(int n)
現在の書き込み位置のポインタを n 個進める。 書き込み可能な要素数以上の数値を指定した場合、PRECONDITION_NOT_MET を返す。
advanceWptr
インタフェース内 BufferBase<DataType>
n
- 書込みポインタ + n の位置のポインタ
public ReturnCode advanceWptr()
現在の書き込み位置のポインタを n 個進める。 書き込み可能な要素数以上の数値を指定した場合、PRECONDITION_NOT_MET を返す。
advanceWptr
インタフェース内 BufferBase<DataType>
public int writable()
バッファに書込み可能な要素数を返す。
writable
インタフェース内 BufferBase<DataType>
public boolean full()
バッファfullチェック用純粋仮想関数
full
インタフェース内 BufferBase<DataType>
public DataType rptr(int n)
バッファの現在の読み出し要素のポインタまたは、 n個先のポインタを返す
rptr
インタフェース内 BufferBase<DataType>
n
- 読み出しポインタ + n の位置のポインタ
public DataType rptr()
バッファの現在の読み出し要素のポインタを返す
rptr
インタフェース内 BufferBase<DataType>
public ReturnCode advanceRptr(int n)
現在の読み出し位置のポインタを n 個進める。
advanceRptr
インタフェース内 BufferBase<DataType>
n
- 読み出しポインタ + n の位置のポインタ
public ReturnCode advanceRptr()
現在の読み出し位置のポインタを n 個進める。
advanceRptr
インタフェース内 BufferBase<DataType>
public int readable()
バッファから読み出し可能な要素数を返す。
readable
インタフェース内 BufferBase<DataType>
public boolean empty()
バッファemptyチェック用純粋仮想関数
empty
インタフェース内 BufferBase<DataType>