|
Scala example source code file (actor-getstate.scala)
The Scala actor-getstate.scala source codeimport scala.actors.{Reactor, Actor, TIMEOUT} import Actor._ object Test { def assert(cond: => Boolean, hint: String) { if (!cond) println("FAIL ["+hint+"]") } def expectActorState(a: Reactor[T] forSome { type T }, s: Actor.State.Value) { var done = false var i = 0 while (!done) { i = i + 1 if (i == 10) { // only wait for 2 seconds total println("FAIL ["+a+": expected "+s+"]") done = true } Thread.sleep(200) if (a.getState == s) // success done = true } } def main(args: Array[String]) { actor { val a = new Reactor[Any] { def act() { assert(getState == Actor.State.Runnable, "runnable1") react { case 'go => println("OK") } } } expectActorState(a, Actor.State.New) a.start() expectActorState(a, Actor.State.Suspended) a ! 'go expectActorState(a, Actor.State.Terminated) val b = new Actor { def act() { assert(getState == Actor.State.Runnable, "runnable2: "+getState) react { case 'go => reactWithin(100000) { case TIMEOUT => case 'go => receive { case 'go => } receiveWithin(100000) { case TIMEOUT => case 'go => println("OK") } } } } } expectActorState(b, Actor.State.New) b.start() expectActorState(b, Actor.State.Suspended) b ! 'go expectActorState(b, Actor.State.TimedSuspended) b ! 'go expectActorState(b, Actor.State.Blocked) b ! 'go expectActorState(b, Actor.State.TimedBlocked) b ! 'go expectActorState(b, Actor.State.Terminated) } } } Other Scala examples (source code examples)Here is a short list of links related to this Scala actor-getstate.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.