CSP for Java
(JCSP) 1.0-rc4

jcsp.lang
Class One2OneChannelInt

java.lang.Object
  |
  +--jcsp.lang.Guard
        |
        +--jcsp.lang.AltingChannelInputInt
              |
              +--jcsp.lang.AltingChannelInt
                    |
                    +--jcsp.lang.One2OneChannelInt
All Implemented Interfaces:
ChannelInputInt, ChannelInt, ChannelOutputInt, Serializable

public class One2OneChannelInt
extends AltingChannelInt
implements Serializable

This implements a one-to-one integer channel.

Description

One2OneChannelInt implements a one-to-one integer channel. Multiple readers or multiple writers are not allowed -- these are catered for by Any2OneChannelInt, One2AnyChannelInt or Any2AnyChannelInt.

The reading process may ALT on this channel. The writing process is committed (i.e. it may not back off).

The default semantics of the channel is that of CSP -- i.e. it is zero-buffered and fully synchronised. The 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.ints 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, Any2OneChannelInt, One2AnyChannelInt, Any2AnyChannelInt, ChannelDataStoreInt, Serialized Form

Constructor Summary
One2OneChannelInt()
          Constructs a new One2OneChannelInt with a ZeroBufferInt ChannelDataStoreInt.
One2OneChannelInt(ChannelDataStoreInt data)
          Deprecated. Use One2OneChannelInt.create (ChannelDataStoreInt).
 
Method Summary
static One2OneChannelInt create(ChannelDataStoreInt store)
          Creates a One2OneChannelInt using the specified ChannelDataStoreInt.
static One2OneChannelInt[] create(int n)
          Creates an array of One2OneChannelInts.
static One2OneChannelInt[] create(int n, ChannelDataStoreInt store)
          Creates an array of One2OneChannelInts using the specified ChannelDataStoreInt.
 boolean pending()
          Returns whether there is data pending on this channel.
 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

One2OneChannelInt

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

One2OneChannelInt

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

Constructs a new One2OneChannelInt 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.
Returns:
the integer read from the channel.

write

public void write(int value)
Writes an int to the channel.
Parameters:
value - the integer to write to the channel.

pending

public boolean pending()
Returns whether there is data pending on this channel.

Note: if there is, it won't go away until you read it. But if there isn't, there may be some by the time you check the result of this method.

This method is provided for convenience. Its functionality can be provided by Pri Alting the channel against a SKIP guard, although at greater run-time and syntactic cost. For example, the following code fragment:

   if (c.pending ()) {
     integer x = c.read ();
     ...  do something with x
   } else (
     ...  do something else
   }
 
is equivalent to:
   if (c_pending.priSelect () == 0) {
     integer x = c.read ();
     ...  do something with x
   } else (
     ...  do something else
 }
 
where earlier would have had to have been declared:
 final Alternative c_pending =
   new Alternative (new Guard[] {c, new Skip ()});
 
Overrides:
pending in class AltingChannelInputInt
Returns:
state of the channel.

create

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

create

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

create

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

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.