Package org.jcsp.lang

# Class AltingChannelInput

java.lang.Object
org.jcsp.lang.Guard
org.jcsp.lang.AltingChannelInput

All Implemented Interfaces:
  `ChannelInput`, `Poisonable`

Direct Known Subclasses:
  `AltingChannelInputWrapper`

public abstract class AltingChannelInput extends Guard implements ChannelInput
This extends `Guard` and `ChannelInput` to enable a process to choose between many object input (and other) events.

A reading-end, obtained from a one-one or any-one channel by invoking its `in()` method, will extend this abstract class.

## Description

`AltingChannelInput` extends `Guard` and `ChannelInput` to enable a process to choose between many object input (and other) events. The methods inherited from `Guard` are of no concern to users of this package.

## Example

     import org.jcsp.lang.*;

     public class AltingExample implements CSProcess {

       private final AltingChannelInput in0, in1;

       public AltingExample (final AltingChannelInput in0,
                             final AltingChannelInput in1) {
         this.in0 = in0;
         this.in1 = in1;
       }

       public void run () {

         final Guard[] altChans = {in0, in1};
         final Alternative alt = new Alternative (altChans);

         while (true) {
           switch (alt.select ()) {
             case 0:
               System.out.println ("in0 read " + in0.read ());
             break;
             case 1:
               System.out.println ("in1 read " + in1.read ());
             break;
           }
         }

       }

     }

Author:
  P.D. Austin and P.H. Welch
See Also:
  - `Guard`
  - `Alternative`

## Constructor Summary

Constructors
Constructor
Description
`AltingChannelInput()`

## Method Summary

Modifier and Type
Method
Description
`abstract boolean`
`pending()`
Returns whether there is data pending on this channel.

### Methods inherited from class org.jcsp.lang.Guard

`schedule`

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

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

### Methods inherited from interface org.jcsp.lang.ChannelInput

`endRead, read, startRead`

### Methods inherited from interface org.jcsp.lang.Poisonable

`poison`

## Constructor Details

### AltingChannelInput

public AltingChannelInput()

## Method Details

### pending

public abstract 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.

Returns:
  state of the channel.