Package org.jcsp.util.ints

# Class ZeroBufferInt

java.lang.Object
org.jcsp.util.ints.ZeroBufferInt

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `ChannelDataStoreInt`

public class ZeroBufferInt extends Object implements ChannelDataStoreInt, Serializable
This is used to create a zero-buffered integer channel that never loses data.

## Description

`ZeroBufferInt` is an implementation of `ChannelDataStoreInt` that yields the standard CSP semantics for a channel -- that is zero buffered with direct synchronisation between reader and writer. Unless specified otherwise, this is the default behaviour for channels. See the `static` construction methods of `Channel` (`Channel.one2oneInt(org.jcsp.util.ints.ChannelDataStoreInt)` etc.).

The `getState` method will return `FULL` if there is an output waiting on the channel and `EMPTY` if there is not.

Author:
  P.D. Austin
See Also:
  - `BufferInt`
  - `OverWriteOldestBufferInt`
  - `OverWritingBufferInt`
  - `OverFlowingBufferInt`
  - `InfiniteBufferInt`
  - `ChannelInt`
  - Serialized Form

## Field Summary

### Fields inherited from interface org.jcsp.util.ints.ChannelDataStoreInt

`EMPTY, FULL, NONEMPTYFULL`

## Constructor Summary

Constructors
Constructor
Description
`ZeroBufferInt()`

## Method Summary

Modifier and Type
Method
Description
`Object`
`clone()`
Returns a new (and `EMPTY`) `ZeroBufferInt` with the same creation parameters as this one.
`void`
`endGet()`
Ends the extended rendezvous by clearing the buffer.
`int`
`get()`
Returns the `int` from the `ZeroBufferInt`.
`int`
`getState()`
Returns the current state of the `ZeroBufferInt`.
`void`
`put(int value)`
Puts a new `int` into the `ZeroBufferInt`.
`void`
`removeAll()`
`int`
`startGet()`
Begins an extended rendezvous - simply returns the next integer in the buffer.

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ZeroBufferInt

public ZeroBufferInt()

## Method Details

### get

public int get()
Returns the `int` from the `ZeroBufferInt`.

Pre-condition: `getState` must not currently return `EMPTY`.

Specified by:
  `get` in interface `ChannelDataStoreInt`
Returns:
  the `int` from the `ZeroBufferInt`

### startGet

public int startGet()
Begins an extended rendezvous - simply returns the next integer in the buffer. This function does not remove the integer. Pre-condition: `getState` must not currently return `EMPTY`.

Specified by:
  `startGet` in interface `ChannelDataStoreInt`
Returns:
  The integer in the buffer.
See Also:
  - `ChannelDataStoreInt.endGet()`

### endGet

public void endGet()
Ends the extended rendezvous by clearing the buffer.

Specified by:
  `endGet` in interface `ChannelDataStoreInt`
See Also:
  - `ChannelDataStoreInt.startGet()`

### put

public void put(int value)
Puts a new `int` into the `ZeroBufferInt`.

Pre-condition: `getState` must not currently return `FULL`.

Specified by:
  `put` in interface `ChannelDataStoreInt`
Parameters:
  `value` - the int to put into the ZeroBufferInt

### getState

public int getState()
Returns the current state of the `ZeroBufferInt`.

Specified by:
  `getState` in interface `ChannelDataStoreInt`
Returns:
  the current state of the `ZeroBufferInt` (`EMPTY` or `FULL`)

### clone

public Object clone()
Returns a new (and `EMPTY`) `ZeroBufferInt` with the same creation parameters as this one.

Note: Only the size and structure of the `ZeroBufferInt` is cloned, not any stored data.

Specified by:
  `clone` in interface `ChannelDataStoreInt`
Overrides:
  `clone` in class `Object`
Returns:
  the cloned instance of this `ZeroBufferInt`.

### removeAll

public void removeAll()

Specified by:
  `removeAll` in interface `ChannelDataStoreInt`