CSP for Java
(JCSP) 1.0-rc4

jcsp.lang
Class Any2AnyChannelInt

java.lang.Object
  |
  +--jcsp.lang.Any2AnyChannelInt
All Implemented Interfaces:
ChannelInputInt, ChannelInt, ChannelOutputInt, Serializable

public class Any2AnyChannelInt
extends Object
implements ChannelInt, Serializable

This implements a any-to-any integer channel, safe for use by many writers and many readers.

Description

Any2AnyChannelInt is an implementation of an integer channel which is safe for use by many reading and writing processes. Reading processes compete with each other to use the channel. Writing processes compete with each other to use the channel. Only one reader and one writer will actually be using the channel at any one time. This is taken care of by Any2AnyChannelInt -- user processes just read from or write to it.

Please note that this is a sefely shared channel and not a multicaster. Currently, multicasting has to be managed by writing active processes (see DynamicDeltaInt for an example of broadcasting).

All reading processes and writing processes commit to the channel (i.e. may not back off). This means that the reading processes may not ALT on this channel.

The default semantics of the channel is that of CSP -- i.e. it is zero-buffered and fully synchronised. A reading process must wait for a matching writer and vice-versa.

However, the static create method allows the user to create a channel with a plug-in driver conforming to the ChannelDataStoreInt interface. This allows a variety of different channel semantics to be introduced -- including buffered channels of user-defined capacity (including infinite), overwriting channels (with various overwriting policies) etc.. Standard examples are given in the jcsp.util package, but careful users may write their own.

Other static create methods allows the user to create fully initialised arrays of channels, including plug-ins if required.

Author:
P.D.Austin and P.H.Welch
See Also:
Alternative, One2OneChannelInt, Any2OneChannelInt, One2AnyChannelInt, ChannelDataStoreInt, Serialized Form

Constructor Summary
Any2AnyChannelInt()
          Constructs a new Any2AnyChannelInt with a ZeroBufferInt ChannelDataStoreInt.
Any2AnyChannelInt(ChannelDataStoreInt data)
          Deprecated. Use Any2AnyChannelInt.create (ChannelDataStoreInt).
 
Method Summary
static Any2AnyChannelInt create(ChannelDataStoreInt store)
          Creates a Any2AnyChannelInt using the specified ChannelDataStoreInt.
static Any2AnyChannelInt[] create(int n)
          Creates an array of Any2AnyChannelInts.
static Any2AnyChannelInt[] create(int n, ChannelDataStoreInt store)
          Creates an array of Any2AnyChannelInts using the specified ChannelDataStoreInt.
 int read()
          Reads an int from the channel.
 void write(int value)
          Writes an int to the channel.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Any2AnyChannelInt

public Any2AnyChannelInt()
Constructs a new Any2AnyChannelInt with a ZeroBufferInt ChannelDataStoreInt.

Any2AnyChannelInt

public Any2AnyChannelInt(ChannelDataStoreInt data)
Deprecated. Use Any2AnyChannelInt.create (ChannelDataStoreInt).

Constructs a new Any2AnyChannelInt with the specified ChannelDataStoreInt.
Parameters:
data - The ChannelDataStoreInt used to store the data for the Channel
Method Detail

read

public int read()
Reads an int from the channel. This method also ensures only one of the readers can actually be reading at any time. All other readers are blocked until it completes the read.
Specified by:
read in interface ChannelInputInt
Returns:
the integer read from the Channel.

write

public void write(int value)
Writes an int to the channel. This method also ensures only one of the writers can actually be writing at any time. All other writers are blocked until it completes the write.
Specified by:
write in interface ChannelOutputInt
Parameters:
value - the integer to write to the Channel.

create

public static Any2AnyChannelInt[] create(int n)
Creates an array of Any2AnyChannelInts.
Parameters:
n - the number of channels to create in the array
Returns:
the array of Any2AnyChannelInts

create

public static Any2AnyChannelInt create(ChannelDataStoreInt store)
Creates a Any2AnyChannelInt using the specified ChannelDataStoreInt.
Returns:
the Any2AnyChannelInt

create

public static Any2AnyChannelInt[] create(int n,
                                         ChannelDataStoreInt store)
Creates an array of Any2AnyChannelInts using the specified ChannelDataStoreInt.
Parameters:
n - the number of channels to create in the array
Returns:
the array of Any2AnyChannelInts

CSP for Java
(JCSP) 1.0-rc4

Submit a bug or feature to jcsp-team@ukc.ac.uk
Version 1.0-rc4 of the JCSP API Specification (Copyright 1997-2000 P.D.Austin and P.H.Welch - All Rights Reserved)
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.