public final class Deparaplex extends java.lang.Object implements CSProcess
Paraplex
process on the other
end of its in channel back to separate streams (its out
channels). It assumes that Paraplex
operates on the same
size array of channels as its out array. It conforms to
contract required by Paraplex
for a process receiving its packets.
In each cycle, it inputs one packet and outputs its contents in parallel to each of its output channels. The parallel output means that the process will wait until each item is accepted by every channel -- in whatever order is demanded by its environment. The ordering of the channels in the out array, therefore, makes no difference to the functionality of this process.
Input Channels | ||
---|---|---|
in | Object[] | A packet carrying the paraplexed data. |
Output Channels | ||
out[] | Object | Most channels in this package carry integers. |
import org.jcsp.lang.*; import org.jcsp.plugNplay.*; public class DeparaplexExample { public static void main (String[] args) { final One2OneChannel[] a = Channel.one2oneArray (3); final One2OneChannel b = Channel.one2one (); final One2OneChannel[] c = Channel.one2oneArray (3); final One2OneChannel d = Channel.one2one (); new Parallel ( new CSProcess[] { new Numbers (a[0].out ()), new Squares (a[1].out ()), new Fibonacci (a[2].out ()), new Paraplex (Channel.getInputArray (a), b.out ()), new Deparaplex (b.in (), Channel.getOutputArray (c)), new Paraplex (Channel.getInputArray (c), d.out ()), new CSProcess () { public void run () { System.out.println ("\n\t\tNumbers\t\tSquares\t\tFibonacci\n"); while (true) { Object[] data = (Object[]) d.in ().read (); for (int i = 0; i < data.length; i++) { System.out.print ("\t\t" + data[i]); } System.out.println (); } } } } ).run (); } }
Paraplex
,
Multiplex
,
Demultiplex
Modifier and Type | Field and Description |
---|---|
private ChannelInput |
in
The input Channel
|
private ChannelOutput[] |
out
The output Channels
|
Constructor and Description |
---|
Deparaplex(ChannelInput in,
ChannelOutput[] out)
Construct a new Deparaplex process with the input Channel in and the output
Channels out.
|
Modifier and Type | Method and Description |
---|---|
void |
run()
The main body of this process.
|
private final ChannelInput in
private final ChannelOutput[] out
public Deparaplex(ChannelInput in, ChannelOutput[] out)
in
- the input channelout
- the output Channels