Class Multiplex

  • All Implemented Interfaces:
    CSProcess

    public final class Multiplex
    extends java.lang.Object
    implements CSProcess
    Fair multiplexes its input Object stream array into one output stream (carrying source channel and data pairs).

    Process Diagram

    Description

    Multiplex is a process to convert multiple streams of objects to a single stream in such a way that it can be de-multiplexed later. The protocol on the outgoing multiplexed stream consists of an Integer, that represents the channel identity of the multiplexed data, followed by the multiplexed data.

    The ordering of the channels in the in array makes no difference to the functionality of this process -- the multiplexing services all channels fairly.

    Channel Protocols

    Input Channels
    in[] java.lang.Object The input streams.
    Output Channels
    out java.lang.Integer, java.lang.Object The channel index followed by the multiplexed data.

    Example

    The following example shows how to use MultiplexInt in a small program.
     import org.jcsp.lang.*;
     import org.jcsp.plugNplay.*;
     
     public class MultiplexExample {
     
       public static void main (String[] argv) {
     
         final One2OneChannel[] a = Channel.one2oneArray (3);
         final One2OneChannel b = Channel.one2one ();
     
         new Parallel (
           new CSProcess[] {
             new Numbers (a[0].out ()),
             new Fibonacci (a[1].out ()),
             new Squares (a[2].out ()),
             new Multiplex (Channel.getInputArray (a), b.out ()),
             new CSProcess () {
               public void run () {
                 String[] key = {"Numbers ",
                                 "            Fibonacci ",
                                 "                          Squares "};
                 while (true) {
                   int channel = ((Integer) b.in ().read ()).intValue ();
                   System.out.print (key[channel]);     // print channel source
                   int n = ((Integer) b.in ().read ()).intValue ();
                   System.out.println (n);              // print multiplexed data
                 }
               }
             }
           }
         ).run ();
     
       }
     
     }
     
    See Also:
    Demultiplex, Paraplex, Deparaplex, Plex
    • Constructor Summary

      Constructors 
      Constructor Description
      Multiplex​(AltingChannelInput[] in, ChannelOutput out)
      Construct a new Multiplex process with the input Channel in and the output Channels out.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      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 Detail

      • Multiplex

        public Multiplex​(AltingChannelInput[] in,
                         ChannelOutput out)
        Construct a new Multiplex process with the input Channel in and the output Channels out. The ordering of the Channels in the in array make no difference to the functionality of this process -- the multiplexing services all channels fairly.
        Parameters:
        in - the input channels
        out - the output channel
    • Method Detail

      • run

        public void run()
        The main body of this process.
        Specified by:
        run in interface CSProcess