diff options
Diffstat (limited to 'test/files/jvm/reactor-producer-consumer.scala')
-rw-r--r-- | test/files/jvm/reactor-producer-consumer.scala | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/files/jvm/reactor-producer-consumer.scala b/test/files/jvm/reactor-producer-consumer.scala index 0d33043fc6..8a6b17c3ad 100644 --- a/test/files/jvm/reactor-producer-consumer.scala +++ b/test/files/jvm/reactor-producer-consumer.scala @@ -7,6 +7,7 @@ object Test { class UnboundedBuffer extends Reactor[Any] { def act() { + try { react { case Stop() => case Get(from) => @@ -17,11 +18,16 @@ object Test { act() } } + } catch { + case e: Throwable if !e.isInstanceOf[scala.util.control.ControlThrowable] => + e.printStackTrace() + } } } class Producer(buf: UnboundedBuffer, n: Int, delay: Long, parent: Reactor[Any]) extends Reactor[Any] { def act() { + try { var i = 0 while (i < n) { i += 1 @@ -29,6 +35,10 @@ object Test { buf ! Put(42) } parent ! Stop() + } catch { + case e: Throwable if !e.isInstanceOf[scala.util.control.ControlThrowable] => + e.printStackTrace() + } } } @@ -36,6 +46,7 @@ object Test { val step = n / 10 var i = 0 def act() { + try { if (i < n) { i += 1 if (delay > 0) Thread.sleep(delay) @@ -49,12 +60,17 @@ object Test { } else { parent ! Stop() } + } catch { + case e: Throwable if !e.isInstanceOf[scala.util.control.ControlThrowable] => + e.printStackTrace() + } } } def main(args: Array[String]) { val parent = new Reactor[Any] { def act() { + try { val buffer = new UnboundedBuffer buffer.start() val producer = new Producer(buffer, 10000, 0, this) @@ -68,6 +84,10 @@ object Test { buffer ! Stop() } } + } catch { + case e: Throwable if !e.isInstanceOf[scala.util.control.ControlThrowable] => + e.printStackTrace() + } } } parent.start() |