~ubuntu-branches/ubuntu/precise/jcsp/precise

« back to all changes in this revision

Viewing changes to src/jcsp-demos/altingBarriers/AltingBarrierGadget2Demo0.java

  • Committer: Bazaar Package Importer
  • Author(s): Miguel Landaeta
  • Date: 2010-06-20 18:12:26 UTC
  • Revision ID: james.westby@ubuntu.com-20100620181226-8yg8d9rjjjiuy7oz
Tags: upstream-1.1-rc4
ImportĀ upstreamĀ versionĀ 1.1-rc4

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
import org.jcsp.demos.util.*;
 
3
import org.jcsp.lang.*;
 
4
import org.jcsp.util.*;
 
5
import org.jcsp.plugNplay.*;
 
6
 
 
7
import java.awt.Color;
 
8
 
 
9
public class AltingBarrierGadget2Demo0 {
 
10
 
 
11
  public static void main (String[] argv) {
 
12
 
 
13
    // final int nUnits = 30, span = 6;
 
14
    //
 
15
    // final int offInterval = 800, standbyInterval = 1000;     // milliseconds
 
16
    // final int playInterval = 10000;                          // milliseconds
 
17
 
 
18
    final int nUnits = Ask.Int ("\nnUnits = ", 3, 30);
 
19
    
 
20
    final int span = Ask.Int ("span = ", 2, nUnits);
 
21
 
 
22
    final int offInterval =
 
23
      Ask.Int ("off interval (millisecs) = ", 100, 10000);
 
24
    final int standbyInterval =
 
25
      Ask.Int ("standby interval (millisecs) = ", 100, 20000);
 
26
    final int playInterval =
 
27
      Ask.Int ("play interval (millisecs) = ", 1000, 1000000000);
 
28
 
 
29
    final Color offColour = Color.black, standbyColour = Color.lightGray;
 
30
    
 
31
    // make the buttons
 
32
    
 
33
    final One2OneChannel[] click =
 
34
      Channel.one2oneArray (nUnits, new OverWriteOldestBuffer (1));
 
35
 
 
36
    final One2OneChannel[] configure = Channel.one2oneArray (nUnits);
 
37
 
 
38
    final boolean horizontal = true;
 
39
 
 
40
    final FramedButtonArray buttons =
 
41
      new FramedButtonArray (
 
42
        "AltingBarrier: Gadget 2, Demo 0", nUnits, 100, nUnits*50,
 
43
         horizontal, Channel.getInputArray(configure), Channel.getOutputArray(click)
 
44
      );
 
45
 
 
46
    // construct nUnits barriers, each with span front-ends ...
 
47
    
 
48
    AltingBarrier[][] ab = new AltingBarrier[nUnits][];
 
49
    for (int i = 0; i < nUnits; i++) {
 
50
      ab[i] = AltingBarrier.create (span);
 
51
    }
 
52
 
 
53
    // re-arrange front-ends, ready for distribution to processes ...
 
54
    
 
55
    AltingBarrier[][]barrier = new AltingBarrier[nUnits][span];
 
56
    for (int i = 0; i < nUnits; i++) {
 
57
      for (int j = 0; j < span; j++) {
 
58
        barrier[i][j] = ab[(i + j) % nUnits][j];
 
59
      }
 
60
    }
 
61
 
 
62
    // make the track and the gadgets
 
63
 
 
64
    One2OneChannel[] forwards = Channel.one2oneArray (nUnits);
 
65
    One2OneChannel[] backwards = Channel.one2oneArray (nUnits);
 
66
 
 
67
    AltingBarrierGadget2[] gadgets = new AltingBarrierGadget2[nUnits];
 
68
    for (int i = 0; i < nUnits; i++) {
 
69
      gadgets[i] =
 
70
        new AltingBarrierGadget2 (
 
71
          barrier[i],
 
72
          forwards[i].in(), backwards[i].out(),
 
73
          backwards[(i + 1)%nUnits].in(), forwards[(i + 1)%nUnits].out(), 
 
74
          click[i].in(), configure[i].out(),
 
75
          offColour, standbyColour,
 
76
          offInterval, standbyInterval, playInterval
 
77
        );
 
78
    }
 
79
 
 
80
    // run everything
 
81
 
 
82
    new Parallel (
 
83
      new CSProcess[] {
 
84
        buttons, new Parallel (gadgets)
 
85
      }
 
86
    ).run ();
 
87
 
 
88
  }
 
89
 
 
90
}