public class InfiniteBuffer<T> extends Object implements ChannelDataStore<T>, Serializable
Channel
(Channel.one2one(org.jcsp.util.ChannelDataStore)
etc.).
The getState method returns EMPTY or NONEMPTYFULL, but never FULL.
An initial size for the buffer can be specified during construction.
ZeroBuffer
,
Buffer
,
OverWriteOldestBuffer
,
OverWritingBuffer
,
OverFlowingBuffer
,
Channel
,
Serialized FormEMPTY, FULL, NONEMPTYFULL
Constructor and Description |
---|
InfiniteBuffer()
Construct a new InfiniteBuffer with the default size (of 8).
|
InfiniteBuffer(int initialSize)
Construct a new InfiniteBuffer with the specified initial size.
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
Returns a new (and EMPTY) InfiniteBuffer with the same
creation parameters as this one.
|
void |
endGet()
Removes the oldest object from the buffer.
|
T |
get()
Returns the oldest Object from the InfiniteBuffer and removes it.
|
int |
getState()
Returns the current state of the InfiniteBuffer.
|
void |
put(T value)
Puts a new Object into the InfiniteBuffer.
|
void |
removeAll()
Deletes all items in the buffer, leaving it empty.
|
T |
startGet()
Returns the oldest object from the buffer but does not remove it.
|
public InfiniteBuffer()
public InfiniteBuffer(int initialSize)
initialSize
- the number of Objects
the InfiniteBuffer can initially store.BufferSizeError
- if size is zero or negative. Note: no action
should be taken to try/catch this exception
- application code generating it is in error and needs correcting.public T get()
Pre-condition: getState must not currently return EMPTY.
get
in interface ChannelDataStore<T>
public T startGet()
startGet
in interface ChannelDataStore<T>
ChannelDataStore.endGet()
public void endGet()
endGet
in interface ChannelDataStore<T>
ChannelDataStore.startGet()
public void put(T value)
Implementation note: if InfiniteBuffer is full, a new internal buffer with double the capacity is constructed and the old data copied across.
put
in interface ChannelDataStore<T>
value
- the Object to put into the InfiniteBufferpublic int getState()
getState
in interface ChannelDataStore<T>
public Object clone()
Note: Only the initial size and structure of the InfiniteBuffer is cloned, not any stored data.
clone
in interface ChannelDataStore<T>
clone
in class Object
public void removeAll()
ChannelDataStore
removeAll
in interface ChannelDataStore<T>
Copyright © 1996–2016. All rights reserved.