From 503d8c26b9c75a7689cfecee07803e4cd0d21401 Mon Sep 17 00:00:00 2001 From: Philipp Haller Date: Thu, 28 May 2009 08:57:30 +0000 Subject: Added test for OutputChannelActor. --- test/files/jvm/outputchannelactor.scala | 63 +++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 test/files/jvm/outputchannelactor.scala (limited to 'test/files/jvm/outputchannelactor.scala') diff --git a/test/files/jvm/outputchannelactor.scala b/test/files/jvm/outputchannelactor.scala new file mode 100644 index 0000000000..6a982b7a94 --- /dev/null +++ b/test/files/jvm/outputchannelactor.scala @@ -0,0 +1,63 @@ + +import scala.actors.OutputChannelActor +import scala.actors.Actor._ + +case class Ping(from: OutputChannelActor) +case object Pong +case object Stop + +/** + * Ping pong example for OutputChannelActor. + * + * @author Philipp Haller + */ +object Test { + def main(args: Array[String]) { + val pong = new PongActor + val ping = new PingActor(100000, pong) + ping.start + pong.start + } +} + +class PingActor(count: Int, pong: OutputChannelActor) extends OutputChannelActor { + ignoreSender = true + def act() { + var pingsLeft = count - 1 + pong ! Ping(this) + loop { + react { + case Pong => + if (pingsLeft % 10000 == 0) + println("Ping: pong") + if (pingsLeft > 0) { + pong ! Ping(this) + pingsLeft -= 1 + } else { + println("Ping: stop") + pong ! Stop + exit() + } + } + } + } +} + +class PongActor extends OutputChannelActor { + ignoreSender = true + def act() { + var pongCount = 0 + loop { + react { + case Ping(from) => + if (pongCount % 10000 == 0) + println("Pong: ping "+pongCount) + from ! Pong + pongCount += 1 + case Stop => + println("Pong: stop") + exit() + } + } + } +} -- cgit v1.2.3