Package org.jcsp.plugNplay

# Class Demultiplex

java.lang.Object
org.jcsp.plugNplay.Demultiplex

All Implemented Interfaces:
  `CSProcess`

public final class Demultiplex extends Object implements CSProcess
This demultiplexes data from its input channel to its output channel array.

## Process Diagram

## Description

`Demultiplex` is a process to convert the single stream of (Integer, Object) messages sent from a `Multiplex` process on the other end of its `in` channel back into separate streams (its `out` channels). It assumes that `Multiplex` operates on the same size array of channels as its `out` array.

The protocol on the incoming multiplexed stream consists of an `Integer`, that represents the channel identity of the multiplexed data, followed by the multiplexed data.

## Channel Protocols

Input Channels
in | java.lang.Integer, java.lang.Object | A channel index followed by the multiplexed data.
Output Channels
out[] | java.lang.Object | All channels in this package carry integers.

Author:
  P.H. Welch and P.D. Austin
See Also:
  - `Multiplex`
  - `Paraplex`
  - `Deparaplex`

## Constructor Summary

Constructors
Constructor
Description
`Demultiplex(ChannelInput in, ChannelOutput[] out)`
Construct a new Demultiplex process with the input Channel in and the output Channels out.

## Method Summary

Modifier and Type
Method
Description
`void`
`run()`
The main body of this process.

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

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

## Constructor Details

### Demultiplex

public Demultiplex(ChannelInput in, ChannelOutput[] out)
Construct a new Demultiplex process with the input Channel in and the output Channels out. The ordering of the Channels in the out array make no difference to the functionality of this process.

Parameters:
  `in` - the input channel
  `out` - the output channels

## Method Details

### run

public void run()
The main body of this process.

Specified by:
  `run` in interface `CSProcess`