Package org.jcsp.lang

# Class AltingChannelOutput

java.lang.Object
org.jcsp.lang.Guard
org.jcsp.lang.AltingChannelOutput

All Implemented Interfaces:
  `ChannelOutput`, `Poisonable`

public abstract class AltingChannelOutput extends Guard implements ChannelOutput
This extends `Guard` and `ChannelOutput` to enable a process to choose between many integer output (and other) events.

A writing-end, obtained only from a `symmetric` channel by invoking its `out()` method, will implement this interface.

## Description

`AltingChannelOutput` extends `Guard` and `ChannelOutput` to enable a process to choose between many integer output (and other) events. The methods inherited from `Guard` are of no concern to users of this package.

## Example

     import org.jcsp.lang.*;

     public class AltingOutputExample implements CSProcess {

       private final AltingChannelOutput out0, out1;

       public AltingOutputExample (final AltingChannelOutput out0,
                                   final AltingChannelOutput out1) {
         this.out0 = out0;
         this.out1 = out1;
       }

       public void run () {

         final Guard[] altChans = {out0, out1};
         final Alternative alt = new Alternative (altChans);

         while (true) {
           switch (alt.select ()) {
             case 0:
               out0.write (new Integer (0));
               System.out.println ("out0 written");
             break;
             case 1:
               out1.write (new Integer (1));
               System.out.println ("out1 written");
             break;
           }
         }

       }

     }

Author:
  P.H. Welch
See Also:
  - `Guard`
  - `Alternative`
  - `One2OneChannelSymmetric`
  - `AltingChannelOutputInt`

## Constructor Summary

Constructors
Constructor
Description
`AltingChannelOutput()`

## Method Summary

Modifier and Type
Method
Description
`abstract boolean`
`pending()`
Returns whether the receiver is committed to read from 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.ChannelOutput

`write`

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

`poison`

## Constructor Details

### AltingChannelOutput

public AltingChannelOutput()

## Method Details

### pending

public abstract boolean pending()
Returns whether the receiver is committed to read from this channel.

Note: if this returns true, you must commit to write down this channel.

Returns:
  state of the channel.