summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2007-02-15 21:29:01 +0000
committerPhilipp Haller <hallerp@gmail.com>2007-02-15 21:29:01 +0000
commit5c8c46664d780041be192f6bba7ce44875d8e9e1 (patch)
tree800c22c5147d6fdde88439a0648544c0dfa55f50 /docs
parent100b76d0f5a89b60bc75bce73725f4da33375a78 (diff)
downloadscala-5c8c46664d780041be192f6bba7ce44875d8e9e1.tar.gz
scala-5c8c46664d780041be192f6bba7ce44875d8e9e1.tar.bz2
scala-5c8c46664d780041be192f6bba7ce44875d8e9e1.zip
Improved ping pong actor example.
Diffstat (limited to 'docs')
-rw-r--r--docs/examples/actors/pingpong.scala64
1 files changed, 28 insertions, 36 deletions
diff --git a/docs/examples/actors/pingpong.scala b/docs/examples/actors/pingpong.scala
index 6ab43c5528..40b6486727 100644
--- a/docs/examples/actors/pingpong.scala
+++ b/docs/examples/actors/pingpong.scala
@@ -4,52 +4,44 @@ import scala.actors.Actor
import scala.actors.Actor._
abstract class PingMessage
-case class MsgPingInit(count: int, pong: Actor) extends PingMessage
-case object MsgStart extends PingMessage
-case object MsgSendPing extends PingMessage
-case object MsgPong extends PingMessage
+case object Start extends PingMessage
+case object SendPing extends PingMessage
+case object Pong extends PingMessage
abstract class PongMessage
-case object MsgPing extends PongMessage
-case object MsgStop extends PongMessage
+case object Ping extends PongMessage
+case object Stop extends PongMessage
-object pingpong {
- def main(args : Array[String]) {
- val ping = new Ping
- ping.start
- val pong = new Pong
- pong.start
- ping ! MsgPingInit(100000, pong)
- ping ! MsgStart
- }
+object pingpong extends Application {
+ val pong = new Pong
+ val ping = new Ping(100000, pong)
+ ping.start
+ pong.start
+ ping ! Start
}
-class Ping extends Actor {
+class Ping(count: int, pong: Actor) extends Actor {
def act() {
- var pingsLeft = 0
- var pong: Actor = null
+ Console.println("Ping: Initializing with count "+count+": "+pong)
+ var pingsLeft = count
loop {
react {
- case MsgPingInit(count, png) =>
- Console.println("Ping: Initializing with count "+count+": "+png)
- pingsLeft = count
- pong = png
- case MsgStart =>
+ case Start =>
Console.println("Ping: starting.")
- pong ! MsgPing
+ pong ! Ping
pingsLeft = pingsLeft - 1
- case MsgSendPing =>
- pong ! MsgPing
+ case SendPing =>
+ pong ! Ping
pingsLeft = pingsLeft - 1
- case MsgPong =>
- if (pingsLeft % 100 == 0)
+ case Pong =>
+ if (pingsLeft % 1000 == 0)
Console.println("Ping: pong from: "+sender)
if (pingsLeft > 0)
- self ! MsgSendPing
+ self ! SendPing
else {
Console.println("Ping: Stop.")
- pong ! MsgStop
- exit("stop")
+ pong ! Stop
+ exit('stop)
}
}
}
@@ -61,14 +53,14 @@ class Pong extends Actor {
var pongCount = 0
loop {
react {
- case MsgPing =>
- if (pongCount % 100 == 0)
+ case Ping =>
+ if (pongCount % 1000 == 0)
Console.println("Pong: ping "+pongCount+" from "+sender)
- sender ! MsgPong
+ sender ! Pong
pongCount = pongCount + 1
- case MsgStop =>
+ case Stop =>
Console.println("Pong: Stop.")
- exit("stop")
+ exit('stop)
}
}
}