2
import org.jcsp.demos.util.*;
3
import org.jcsp.lang.*;
4
import org.jcsp.util.*;
5
import org.jcsp.plugNplay.*;
9
public class AltingBarrierGadget2Demo0 {
11
public static void main (String[] argv) {
13
// final int nUnits = 30, span = 6;
15
// final int offInterval = 800, standbyInterval = 1000; // milliseconds
16
// final int playInterval = 10000; // milliseconds
18
final int nUnits = Ask.Int ("\nnUnits = ", 3, 30);
20
final int span = Ask.Int ("span = ", 2, nUnits);
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);
29
final Color offColour = Color.black, standbyColour = Color.lightGray;
33
final One2OneChannel[] click =
34
Channel.one2oneArray (nUnits, new OverWriteOldestBuffer (1));
36
final One2OneChannel[] configure = Channel.one2oneArray (nUnits);
38
final boolean horizontal = true;
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)
46
// construct nUnits barriers, each with span front-ends ...
48
AltingBarrier[][] ab = new AltingBarrier[nUnits][];
49
for (int i = 0; i < nUnits; i++) {
50
ab[i] = AltingBarrier.create (span);
53
// re-arrange front-ends, ready for distribution to processes ...
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];
62
// make the track and the gadgets
64
One2OneChannel[] forwards = Channel.one2oneArray (nUnits);
65
One2OneChannel[] backwards = Channel.one2oneArray (nUnits);
67
AltingBarrierGadget2[] gadgets = new AltingBarrierGadget2[nUnits];
68
for (int i = 0; i < nUnits; i++) {
70
new AltingBarrierGadget2 (
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
84
buttons, new Parallel (gadgets)