|
CSP for Java (JCSP) 1.1-rc4 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface ChannelDataStore
This is the interface for object channel plug-ins that define their buffering characteristics.
fixed sized (block when full)
,
fixed size (overwrite oldest data when full)
,
fixed size (accept but discard new data when full)
,
infinitely expandable
).
Channels are constructed using the static construction methods of Channel
.
By default, channels will be constructed with standard CSP semantics –
no buffering and full synchronisation between reading and writing processes
(e.g. Channel.one2one()
).
To construct buffered channels, plug in the appropriate ChannelDataStore
(e.g. Channel.one2one(org.jcsp.util.ChannelDataStore)
).
Note: JCSP users should not normally need to define their own implementations
of this interface.
However, implementors may assume that ChannelDataStore methods
are always invoked (by the various channel classes within org.org.jcsp.lang)
in a thread-safe way – i.e. that there will be no race hazards between invocations
of get
and put
).
They may also assume that the documented pre-conditions for invoking the get
and put methods will be met.
ChannelDataStore is only intended for defining the behaviour of buffers –
it is not intended for any other purpose (e.g. for data-processing or filtering channels).
ZeroBuffer
,
Buffer
,
OverWriteOldestBuffer
,
OverWritingBuffer
,
OverFlowingBuffer
,
InfiniteBuffer
,
Channel
Field Summary | |
---|---|
static int |
EMPTY
Indicates that the ChannelDataStore is empty -- it can accept only a put. |
static int |
FULL
Indicates that the ChannelDataStore is full -- it can accept only a get. |
static int |
NONEMPTYFULL
Indicates that the ChannelDataStore is neither empty nor full -- it can accept either a put or a get call. |
Method Summary | |
---|---|
Object |
clone()
Returns a new (and EMPTY) ChannelDataStore with the same creation parameters as this one. |
void |
endGet()
Ends an extended read on the buffer. |
Object |
get()
Returns an Object from the ChannelDataStore. |
int |
getState()
Returns the current state of the ChannelDataStore. |
void |
put(Object value)
Puts a new Object into the ChannelDataStore. |
void |
removeAll()
Deletes all items in the buffer, leaving it empty. |
Object |
startGet()
Begins an extended read on the buffer, returning the data for the extended read. |
Field Detail |
---|
static final int EMPTY
static final int NONEMPTYFULL
static final int FULL
Method Detail |
---|
int getState()
void put(Object value)
Pre-condition: getState must not currently return FULL.
value
- the Object to put into the ChannelDataStoreObject get()
Pre-condition: getState must not currently return EMPTY.
Object startGet()
Pre-condition: getState must not currently return EMPTY.
The exact behaviour of this method depends on your buffer. When a process performs an
extended rendezvous on a buffered channel, it will first call this method, then the
endGet()
method.
A FIFO buffer would implement this method as returning the value from the front of the buffer and the next call would remove the value. An overflowing buffer would do the same.
However, for an overwriting buffer it is more complex. Refer to the documentation for
OverWritingBuffer.startGet()
and OverWriteOldestBuffer.startGet()
for details
endGet()
void endGet()
startGet
call.
During the period between startGet
and
endGet
, it is possible that
put
will be called, but not get
.
startGet()
Object clone()
Note: Only the size and structure of the ChannelDataStore should be cloned, not any stored data.
void removeAll()
|
CSP for Java (JCSP) 1.1-rc4 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |