summaryrefslogtreecommitdiff
path: root/docs/examples/pilib/handover.scala
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/pilib/handover.scala')
-rw-r--r--docs/examples/pilib/handover.scala134
1 files changed, 65 insertions, 69 deletions
diff --git a/docs/examples/pilib/handover.scala b/docs/examples/pilib/handover.scala
index 85fb899555..9725382c96 100644
--- a/docs/examples/pilib/handover.scala
+++ b/docs/examples/pilib/handover.scala
@@ -1,96 +1,95 @@
-package examples.pilib;
+package examples.pilib
/**
-* Handover example with recursive types for channels.
-*/
+ * Handover example with recursive types for channels.
+ */
object handoverRecursive {
- import concurrent.pilib._;
+ import concurrent.pilib._
- val random = new java.util.Random();
+ val random = new java.util.Random()
/**
- * Recursive type for channels that carry a channel "unit" and
- * an object of the type we define.
- */
- class Switch extends Chan[Pair[Chan[unit], Switch]];
+ * Recursive type for channels that carry a channel "unit" and
+ * an object of the type we define.
+ */
+ class Switch extends Chan[Pair[Chan[unit], Switch]]
/**
- * Car.
- */
+ * Car.
+ */
def Car(talk: Chan[unit], switch: Switch): unit =
choice (
switch * ({ case Pair(t,s) => Car(t, s) }),
talk(()) * ( {
- Thread.sleep(1 + random.nextInt(1000));
- System.out.println("Car emitted a message.");
- Car(talk, switch)
+ Thread.sleep(1 + random.nextInt(1000));
+ System.out.println("Car emitted a message.");
+ Car(talk, switch)
})
);
/**
- * Control center.
- */
+ * Control center.
+ */
def Control(talk1: Chan[unit], switch1: Switch,
- gain1: Switch, lose1: Switch,
- talk2: Chan[unit], switch2: Switch,
- gain2: Switch, lose2: Switch): unit
+ gain1: Switch, lose1: Switch,
+ talk2: Chan[unit], switch2: Switch,
+ gain2: Switch, lose2: Switch): unit
= {
def Control1: unit= {
Thread.sleep(1 + random.nextInt(1000));
lose1.write(Pair(talk2, switch2));
gain2.write(Pair(talk2, switch2));
- Control2;
+ Control2
}
def Control2: unit = {
Thread.sleep(1 + random.nextInt(1000));
lose2.write(Pair(talk1, switch1));
gain1.write(Pair(talk1, switch1));
- Control1;
+ Control1
}
- Control1;
+ Control1
}
/**
* Active transmitter.
*/
def ActiveTransmitter(id: String, talk: Chan[unit], switch: Switch,
- gain: Switch, lose: Switch): unit
+ gain: Switch, lose: Switch): unit
=
choice (
talk * (x => {
- System.out.println(id + " received a message.");
- ActiveTransmitter(id, talk, switch, gain, lose)
+ System.out.println(id + " received a message.")
+ ActiveTransmitter(id, talk, switch, gain, lose)
}),
lose * ({ case Pair(t, s) => {
- switch.write(Pair(t, s));
- IdleTransmitter(id, gain, lose)
+ switch.write(Pair(t, s))
+ IdleTransmitter(id, gain, lose)
}})
);
/**
- * Idle transmitter.
- */
+ * Idle transmitter.
+ */
def IdleTransmitter(id: String, gain: Switch, lose: Switch): unit = {
val Pair(t, s) = gain.read;
ActiveTransmitter(id, t, s, gain, lose)
}
def main(args: Array[String]): unit = {
- val talk1 = new Chan[unit];
- val switch1 = new Switch;
- val gain1 = new Switch;
- val lose1 = new Switch;
- val talk2 = new Chan[unit];
- val switch2 = new Switch;
- val gain2 = new Switch;
- val lose2 = new Switch;
+ val talk1 = new Chan[unit]
+ val switch1 = new Switch
+ val gain1 = new Switch
+ val lose1 = new Switch
+ val talk2 = new Chan[unit]
+ val switch2 = new Switch
+ val gain2 = new Switch
+ val lose2 = new Switch
spawn <
Car(talk1, switch1) |
ActiveTransmitter("Transmitter 1", talk1, switch1, gain1, lose1) |
IdleTransmitter("Transmitter 2", gain2, lose2) |
- Control(talk1, switch1, gain1, lose1, talk2, switch2, gain2, lose2)
- >
+ Control(talk1, switch1, gain1, lose1, talk2, switch2, gain2, lose2) >
}
}
@@ -110,12 +109,12 @@ object handoverCast {
choice (
switch * (o => {
val Pair(t,s) = o.asInstanceOf[Pair[Chan[Any],Chan[Any]]];
- Car(t, s)
+ Car(t, s)
}),
talk(()) * ( {
- Thread.sleep(1 + random.nextInt(1000));
- System.out.println("Car emitted a message.");
- Car(talk, switch)
+ Thread.sleep(1 + random.nextInt(1000));
+ System.out.println("Car emitted a message.");
+ Car(talk, switch)
})
);
@@ -123,11 +122,11 @@ object handoverCast {
* Control center.
*/
def Control(talk1: Chan[Any], switch1: Chan[Any],
- gain1: Chan[Any], lose1: Chan[Any],
- talk2: Chan[Any], switch2: Chan[Any],
- gain2: Chan[Any], lose2: Chan[Any]): unit
+ gain1: Chan[Any], lose1: Chan[Any],
+ talk2: Chan[Any], switch2: Chan[Any],
+ gain2: Chan[Any], lose2: Chan[Any]): unit
= {
- def Control1: unit= {
+ def Control1: unit = {
Thread.sleep(1 + random.nextInt(1000));
lose1.write(Pair(talk2, switch2));
gain2.write(Pair(talk2, switch2));
@@ -143,48 +142,45 @@ object handoverCast {
}
/**
- * Active transmitter.
- */
+ * Active transmitter.
+ */
def ActiveTransmitter(id: String, talk: Chan[Any], switch: Chan[Any],
- gain: Chan[Any], lose: Chan[Any]): unit
+ gain: Chan[Any], lose: Chan[Any]): unit
=
choice (
talk * (x => {
- System.out.println(id + " received a message.");
- ActiveTransmitter(id, talk, switch, gain, lose)
+ System.out.println(id + " received a message.")
+ ActiveTransmitter(id, talk, switch, gain, lose)
}),
lose * (o => {
- val Pair(t, s) = o.asInstanceOf[Pair[Chan[Any],Chan[Any]]];
- switch.write(Pair(t, s));
- IdleTransmitter(id, gain, lose)
+ val Pair(t, s) = o.asInstanceOf[Pair[Chan[Any],Chan[Any]]]
+ switch.write(Pair(t, s))
+ IdleTransmitter(id, gain, lose)
})
- );
+ )
/**
* Idle transmitter.
*/
def IdleTransmitter(id: String, gain: Chan[Any], lose: Chan[Any]): unit = {
- val Pair(t, s) = gain.read.asInstanceOf[Pair[Chan[Any],Chan[Any]]];
+ val Pair(t, s) = gain.read.asInstanceOf[Pair[Chan[Any],Chan[Any]]]
ActiveTransmitter(id, t, s, gain, lose)
}
def main(args: Array[String]): unit = {
- val talk1 = new Chan[Any];
- val switch1 = new Chan[Any];
- val gain1 = new Chan[Any];
- val lose1 = new Chan[Any];
- val talk2 = new Chan[Any];
- val switch2 = new Chan[Any];
- val gain2 = new Chan[Any];
- val lose2 = new Chan[Any];
+ val talk1 = new Chan[Any]
+ val switch1 = new Chan[Any]
+ val gain1 = new Chan[Any]
+ val lose1 = new Chan[Any]
+ val talk2 = new Chan[Any]
+ val switch2 = new Chan[Any]
+ val gain2 = new Chan[Any]
+ val lose2 = new Chan[Any]
spawn <
Car(talk1, switch1) |
ActiveTransmitter("Transmitter 1", talk1, switch1, gain1, lose1) |
IdleTransmitter("Transmitter 2", gain2, lose2) |
- Control(talk1, switch1, gain1, lose1, talk2, switch2, gain2, lose2)
- >
+ Control(talk1, switch1, gain1, lose1, talk2, switch2, gain2, lose2) >
}
}
-
-