2013-01-14 23:21:51 +01:00
|
|
|
|
/**
|
2014-02-02 19:05:45 -06:00
|
|
|
|
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
|
2013-01-14 23:21:51 +01:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
package akka.actor;
|
|
|
|
|
|
|
|
|
|
|
|
import scala.concurrent.ExecutionContext;
|
|
|
|
|
|
import scala.concurrent.duration.FiniteDuration;
|
|
|
|
|
|
|
|
|
|
|
|
//#scheduler
|
|
|
|
|
|
/**
|
|
|
|
|
|
* An Akka scheduler service. This one needs one special behavior: if
|
|
|
|
|
|
* Closeable, it MUST execute all outstanding tasks upon .close() in order
|
|
|
|
|
|
* to properly shutdown all dispatchers.
|
|
|
|
|
|
*
|
|
|
|
|
|
* Furthermore, this timer service MUST throw IllegalStateException if it
|
|
|
|
|
|
* cannot schedule a task. Once scheduled, the task MUST be executed. If
|
|
|
|
|
|
* executed upon close(), the task may execute before its timeout.
|
|
|
|
|
|
*
|
|
|
|
|
|
* Scheduler implementation are loaded reflectively at ActorSystem start-up
|
|
|
|
|
|
* with the following constructor arguments:
|
|
|
|
|
|
* 1) the system’s com.typesafe.config.Config (from system.settings.config)
|
|
|
|
|
|
* 2) a akka.event.LoggingAdapter
|
|
|
|
|
|
* 3) a java.util.concurrent.ThreadFactory
|
|
|
|
|
|
*/
|
|
|
|
|
|
public abstract class AbstractScheduler extends AbstractSchedulerBase {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Schedules a function to be run repeatedly with an initial delay and
|
|
|
|
|
|
* a frequency. E.g. if you would like the function to be run after 2
|
|
|
|
|
|
* seconds and thereafter every 100ms you would set delay = Duration(2,
|
|
|
|
|
|
* TimeUnit.SECONDS) and interval = Duration(100, TimeUnit.MILLISECONDS)
|
|
|
|
|
|
*/
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public abstract Cancellable schedule(FiniteDuration initialDelay,
|
|
|
|
|
|
FiniteDuration interval, Runnable runnable, ExecutionContext executor);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Schedules a Runnable to be run once with a delay, i.e. a time period that
|
|
|
|
|
|
* has to pass before the runnable is executed.
|
|
|
|
|
|
*/
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public abstract Cancellable scheduleOnce(FiniteDuration delay, Runnable runnable,
|
|
|
|
|
|
ExecutionContext executor);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The maximum supported task frequency of this scheduler, i.e. the inverse
|
|
|
|
|
|
* of the minimum time interval between executions of a recurring task, in Hz.
|
|
|
|
|
|
*/
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public abstract double maxFrequency();
|
|
|
|
|
|
}
|
|
|
|
|
|
//#scheduler
|