public class OverWriteOldestBuffer<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.
ZeroBuffer
,
Buffer
,
OverWritingBuffer
,
OverFlowingBuffer
,
InfiniteBuffer
,
Channel
,
Serialized FormEMPTY, FULL, NONEMPTYFULL
Constructor and Description |
---|
OverWriteOldestBuffer(int size)
Construct a new OverWriteOldestBuffer with the specified size.
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
Returns a new (and EMPTY) OverWriteOldestBuffer with the same
creation parameters as this one.
|
void |
endGet()
This ends an extended rendezvous by the reader.
|
T |
get()
Returns the oldest Object from the OverWriteOldestBuffer and removes it.
|
int |
getState()
Returns the current state of the OverWriteOldestBuffer.
|
void |
put(T value)
Puts a new Object into the OverWriteOldestBuffer.
|
void |
removeAll()
Deletes all items in the buffer, leaving it empty.
|
T |
startGet()
Begins an extended rendezvous by the reader.
|
public OverWriteOldestBuffer(int size)
size
- the number of Objects the OverWriteOldestBuffer can 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()
When a reader begins an extended rendezvous, the oldest value is returned from the buffer
(as it would be for a call to get()
). While an extended rendezvous is ongoing, the
writer may (repeatedly) write to the buffer, without ever blocking.
When the reader finishes an extended rendezvous, the following options are possible:
startGet
in interface ChannelDataStore<T>
ChannelDataStore.endGet()
public void endGet()
endGet
in interface ChannelDataStore<T>
startGet()
public void put(T value)
If OverWriteOldestBuffer is full, the oldest item left unread in the buffer will be overwritten.
put
in interface ChannelDataStore<T>
value
- the Object to put into the OverWriteOldestBufferpublic int getState()
getState
in interface ChannelDataStore<T>
public Object clone()
Note: Only the size and structure of the OverWriteOldestBuffer 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–2015. All rights reserved.