Interface ChannelDataStoreInt
-
- All Superinterfaces:
java.lang.Cloneable
- All Known Implementing Classes:
BufferInt
,InfiniteBufferInt
,OverFlowingBufferInt
,OverWriteOldestBufferInt
,OverWritingBufferInt
,ZeroBufferInt
public interface ChannelDataStoreInt extends java.lang.Cloneable
This is the interface for integer channel plug-ins that define their buffering characteristics.Description
ChannelDataStoreInt defines the interface to the logic used by the integer channels defined in the org.jcsp.lang package to manage the data being communicated.This enables that logic to be varied by creating channels specifying a particular implementation of this interface. This reduces the number of classes that would otherwise need to be defined. The default channel constructor (with no parameters) uses the ZeroBuffer implementation, which gives the standard CSP semantics -- no buffering and full synchronisation between reading and writing processes. See the static construction methods of
Channel
(Channel.one2oneInt(org.jcsp.util.ints.ChannelDataStoreInt)
etc.).Note: instances of ChannelDataStoreInt implementations are used by the various channel classes within org.jcsp.lang in a thread-safe way. They are not intended for any other purpose. Developers of new ChannelDataStoreInt implementations, therefore, do not need to worry about thread safety (e.g. by making its methods synchronized). Also, developers can assume that the documented pre-conditions for invoking the get and put methods will be met.
-
-
Field Summary
Fields Modifier and Type Field Description static int
EMPTY
Indicates that the ChannelDataStoreInt is empty -- it can accept only a put.static int
FULL
Indicates that the ChannelDataStoreInt is full -- it can accept only a get.static int
NONEMPTYFULL
Indicates that the ChannelDataStoreInt is neither empty nor full -- it can accept either a put or a get call.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.lang.Object
clone()
Returns a new (and EMPTY) ChannelDataStoreInt with the same creation parameters as this one.void
endGet()
Ends an extended read on the buffer.int
get()
Returns an int from the ChannelDataStoreInt.int
getState()
Returns the current state of the ChannelDataStoreInt.void
put(int value)
Puts a new int into the ChannelDataStoreInt.void
removeAll()
int
startGet()
Begins an extended read on the buffer, returning the data for the extended read Pre-condition: getState must not currently return EMPTY.
-
-
-
Field Detail
-
EMPTY
static final int EMPTY
Indicates that the ChannelDataStoreInt is empty -- it can accept only a put.- See Also:
- Constant Field Values
-
NONEMPTYFULL
static final int NONEMPTYFULL
Indicates that the ChannelDataStoreInt is neither empty nor full -- it can accept either a put or a get call.- See Also:
- Constant Field Values
-
FULL
static final int FULL
Indicates that the ChannelDataStoreInt is full -- it can accept only a get.- See Also:
- Constant Field Values
-
-
Method Detail
-
getState
int getState()
Returns the current state of the ChannelDataStoreInt.- Returns:
- the current state of the ChannelDataStoreInt (EMPTY, NONEMPTYFULL or FULL)
-
put
void put(int value)
Puts a new int into the ChannelDataStoreInt.Pre-condition: getState must not currently return FULL.
- Parameters:
value
- the int to put into the ChannelDataStoreInt
-
get
int get()
Returns an int from the ChannelDataStoreInt.Pre-condition: getState must not currently return EMPTY.
- Returns:
- an int from the ChannelDataStoreInt
-
startGet
int startGet()
Begins an extended read on the buffer, returning the data for the extended read 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 theendGet()
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 forOverWritingBuffer.startGet()
andOverWriteOldestBuffer.startGet()
for details- Returns:
- The int to be read from the channel at the beginning of the extended rendezvous
- See Also:
endGet()
-
endGet
void endGet()
Ends an extended read on the buffer. The channels guarantee that this method will be called exactly once after each beginExtRead call. During the period between startGet and endGet, it is possible thatput(int)
will be called, but notget()
.- See Also:
startGet()
-
clone
java.lang.Object clone()
Returns a new (and EMPTY) ChannelDataStoreInt with the same creation parameters as this one.Note: Only the size and structure of the ChannelDataStoreInt should be cloned, not any stored data.
- Returns:
- the cloned instance of this ChannelDataStoreInt.
-
removeAll
void removeAll()
-
-