diff options
Diffstat (limited to 'src/actors')
10 files changed, 36 insertions, 36 deletions
diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala index aeda4a4670..6c8647daaa 100644 --- a/src/actors/scala/actors/Actor.scala +++ b/src/actors/scala/actors/Actor.scala @@ -10,7 +10,7 @@ package scala.actors -import scala.util.control.ControlException +import scala.util.control.ControlThrowable import java.util.{Timer, TimerTask} import java.util.concurrent.{ExecutionException, Callable} @@ -29,7 +29,7 @@ object Actor extends Combinators { // timer thread runs as daemon private[actors] val timer = new Timer(true) - private[actors] val suspendException = new SuspendActorException + private[actors] val suspendException = new SuspendActorControl /** * Returns the currently executing actor. Should be used instead @@ -623,7 +623,7 @@ trait Actor extends AbstractActor with ReplyReactor with ReplyableActor { } // guarded by lock of this - // never throws SuspendActorException + // never throws SuspendActorControl private[actors] override def scheduleActor(f: PartialFunction[Any, Any], msg: Any) = if (f eq null) { // do nothing (timeout is handled instead) @@ -800,12 +800,12 @@ trait Actor extends AbstractActor with ReplyReactor with ReplyableActor { resumeActor() else if (waitingFor ne Reactor.waitingForNone) { scheduleActor(waitingFor, null) - /* Here we should not throw a SuspendActorException, + /* Here we should not throw a SuspendActorControl, since the current method is called from an actor that is in the process of exiting. Therefore, the contract for scheduleActor is that - it never throws a SuspendActorException. + it never throws a SuspendActorControl. */ } } @@ -851,4 +851,4 @@ case class Exit(from: AbstractActor, reason: AnyRef) * @version 0.9.8 * @author Philipp Haller */ -private[actors] class SuspendActorException extends Throwable with ControlException +private[actors] class SuspendActorControl extends ControlThrowable diff --git a/src/actors/scala/actors/Combinators.scala b/src/actors/scala/actors/Combinators.scala index 073247827c..3c0be7ed15 100644 --- a/src/actors/scala/actors/Combinators.scala +++ b/src/actors/scala/actors/Combinators.scala @@ -34,6 +34,6 @@ private[actors] trait Combinators { if (cond) { body andThen loopWhile(cond)(body) } else continue - def continue: Unit = throw new KillActorException + def continue: Unit = throw new KillActorControl } diff --git a/src/actors/scala/actors/Reaction.scala b/src/actors/scala/actors/Reaction.scala index a8364bc8fb..7ff9204363 100644 --- a/src/actors/scala/actors/Reaction.scala +++ b/src/actors/scala/actors/Reaction.scala @@ -11,10 +11,10 @@ package scala.actors -import scala.util.control.ControlException +import scala.util.control.ControlThrowable import java.lang.{InterruptedException, Runnable} -private[actors] class KillActorException extends Throwable with ControlException +private[actors] class KillActorControl extends ControlThrowable /** <p> * The abstract class <code>Reaction</code> associates diff --git a/src/actors/scala/actors/Reactor.scala b/src/actors/scala/actors/Reactor.scala index a6007a6cd8..a71368e6b2 100644 --- a/src/actors/scala/actors/Reactor.scala +++ b/src/actors/scala/actors/Reactor.scala @@ -119,11 +119,11 @@ trait Reactor extends OutputChannel[Any] with Combinators { handler(item._1) else { scheduleActor(handler, item._1) - /* Here, we throw a SuspendActorException to avoid + /* Here, we throw a SuspendActorControl to avoid terminating this actor when the current ReactorTask is finished. - The SuspendActorException skips the termination code + The SuspendActorControl skips the termination code in ReactorTask. */ throw Actor.suspendException @@ -163,11 +163,11 @@ trait Reactor extends OutputChannel[Any] with Combinators { // keep going } else { waitingFor = handler - /* Here, we throw a SuspendActorException to avoid + /* Here, we throw a SuspendActorControl to avoid terminating this actor when the current ReactorTask is finished. - The SuspendActorException skips the termination code + The SuspendActorControl skips the termination code in ReactorTask. */ throw Actor.suspendException @@ -191,7 +191,7 @@ trait Reactor extends OutputChannel[Any] with Combinators { * * assume handler != null * - * never throws SuspendActorException + * never throws SuspendActorControl */ private[actors] def scheduleActor(handler: PartialFunction[Any, Any], msg: Any) = { val fun = () => handler(msg): Unit @@ -228,7 +228,7 @@ trait Reactor extends OutputChannel[Any] with Combinators { throw Actor.suspendException } first - throw new KillActorException + throw new KillActorControl } protected[this] def exit(): Nothing = { diff --git a/src/actors/scala/actors/ReactorTask.scala b/src/actors/scala/actors/ReactorTask.scala index 3e64eab7a2..87ec7834fa 100644 --- a/src/actors/scala/actors/ReactorTask.scala +++ b/src/actors/scala/actors/ReactorTask.scala @@ -35,12 +35,12 @@ private[actors] class ReactorTask[T >: Null <: Reactor](var reactor: T, var fun: reactor.exceptionHandler(e) } } catch { - case _: KillActorException => + case _: KillActorControl => } reactor.kill() } catch { - case _: SuspendActorException => + case _: SuspendActorControl => // do nothing (continuation is already saved) case e: Exception => diff --git a/src/actors/scala/actors/scheduler/ForkJoinScheduler.scala b/src/actors/scala/actors/scheduler/ForkJoinScheduler.scala index e2537511ac..ab4fca04ca 100644 --- a/src/actors/scala/actors/scheduler/ForkJoinScheduler.scala +++ b/src/actors/scala/actors/scheduler/ForkJoinScheduler.scala @@ -67,12 +67,12 @@ class ForkJoinScheduler(val initCoreSize: Int, val maxSize: Int, daemon: Boolean } if (terminating) - throw new QuitException + throw new QuitControl if (allActorsTerminated) { Debug.info(this+": all actors terminated") terminating = true - throw new QuitException + throw new QuitControl } if (!snapshoting) { @@ -83,12 +83,12 @@ class ForkJoinScheduler(val initCoreSize: Int, val maxSize: Int, daemon: Boolean Debug.info(this+": drained "+num+" tasks") drainedTasks = list terminating = true - throw new QuitException + throw new QuitControl } } } } catch { - case _: QuitException => + case _: QuitControl => Debug.info(this+": initiating shutdown...") while (!pool.isQuiescent()) { try { diff --git a/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala b/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala index ff74d0bc8b..3687138e0e 100644 --- a/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala +++ b/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala @@ -112,7 +112,7 @@ class ResizableThreadPoolScheduler(protected val terminate: Boolean, } if (terminating) - throw new QuitException + throw new QuitControl if (!suspending) { gc() @@ -129,19 +129,19 @@ class ResizableThreadPoolScheduler(protected val terminate: Boolean, Debug.info(this+": corePoolSize = "+coreSize+", maxPoolSize = "+maxSize) terminating = true - throw new QuitException + throw new QuitControl } } } else { drainedTasks = executor.shutdownNow() Debug.info(this+": drained "+drainedTasks.size()+" tasks") terminating = true - throw new QuitException + throw new QuitControl } } // sync } } catch { - case _: QuitException => + case _: QuitControl => executor.shutdown() // allow thread to exit } diff --git a/src/actors/scala/actors/scheduler/SchedulerService.scala b/src/actors/scala/actors/scheduler/SchedulerService.scala index dca8bb5b9c..1f886dbae9 100644 --- a/src/actors/scala/actors/scheduler/SchedulerService.scala +++ b/src/actors/scala/actors/scheduler/SchedulerService.scala @@ -11,7 +11,7 @@ package scala.actors package scheduler -import scala.util.control.ControlException +import scala.util.control.ControlThrowable import java.lang.{Runnable, Thread, InterruptedException} /** @@ -46,16 +46,16 @@ abstract class SchedulerService(daemon: Boolean) extends Thread with IScheduler case _: InterruptedException => } if (terminating) - throw new QuitException + throw new QuitControl gc() if (allActorsTerminated) - throw new QuitException + throw new QuitControl } } } catch { - case _: QuitException => + case _: QuitControl => Debug.info(this+": initiating shutdown...") // invoke shutdown hook onShutdown() @@ -71,10 +71,10 @@ abstract class SchedulerService(daemon: Boolean) extends Thread with IScheduler } /** - * The <code>QuitException</code> class is used to manage control flow + * The <code>QuitControl</code> class is used to manage control flow * of certain schedulers and worker threads. * * @version 0.9.8 * @author Philipp Haller */ -private[actors] class QuitException extends Throwable with ControlException +private[actors] class QuitControl extends ControlThrowable diff --git a/src/actors/scala/actors/scheduler/TerminationService.scala b/src/actors/scala/actors/scheduler/TerminationService.scala index b6f03f11e5..da71b6ac2b 100644 --- a/src/actors/scala/actors/scheduler/TerminationService.scala +++ b/src/actors/scala/actors/scheduler/TerminationService.scala @@ -40,14 +40,14 @@ abstract class TerminationService(terminate: Boolean) case _: InterruptedException => } if (terminating) - throw new QuitException + throw new QuitControl if (terminate && allActorsTerminated) - throw new QuitException + throw new QuitControl } } } catch { - case _: QuitException => + case _: QuitControl => Debug.info(this+": initiating shutdown...") // invoke shutdown hook onShutdown() diff --git a/src/actors/scala/actors/scheduler/ThreadPoolScheduler.scala b/src/actors/scala/actors/scheduler/ThreadPoolScheduler.scala index 2eb18645ff..2061207ee1 100644 --- a/src/actors/scala/actors/scheduler/ThreadPoolScheduler.scala +++ b/src/actors/scala/actors/scheduler/ThreadPoolScheduler.scala @@ -58,13 +58,13 @@ class ThreadPoolScheduler(protected var executor: ThreadPoolExecutor, } if (terminating || (terminate && allActorsTerminated)) - throw new QuitException + throw new QuitControl gc() } } } catch { - case _: QuitException => + case _: QuitControl => Debug.info(this+": initiating shutdown...") // invoke shutdown hook onShutdown() |