akka.dispatch
Class MessageDispatcher

java.lang.Object
  extended by akka.dispatch.MessageDispatcher
All Implemented Interfaces:
BatchingExecutor, java.util.concurrent.Executor, scala.concurrent.ExecutionContext, scala.concurrent.ExecutionContextExecutor
Direct Known Subclasses:
CallingThreadDispatcher, Dispatcher

public abstract class MessageDispatcher
extends java.lang.Object
implements BatchingExecutor, scala.concurrent.ExecutionContextExecutor


Nested Class Summary
 
Nested classes/interfaces inherited from interface scala.concurrent.ExecutionContext
scala.concurrent.ExecutionContext.Implicits$
 
Constructor Summary
MessageDispatcher(MessageDispatcherConfigurator configurator)
           
 
Method Summary
static Index<MessageDispatcher,ActorRef> actors()
           
 void attach(ActorCell actor)
          Attaches the specified actor instance to this dispatcher, which includes scheduling it to run for the first time (Create() is expected to have been enqueued by the ActorCell upon mailbox creation).
 MessageDispatcherConfigurator configurator()
           
protected abstract  Mailbox createMailbox(Cell actor, MailboxType mailboxType)
          Creates and returns a mailbox for the given actor.
static boolean debug()
           
 void detach(ActorCell actor)
          Detaches the specified actor instance from this dispatcher
protected abstract  void dispatch(ActorCell receiver, Envelope invocation)
          Will be called when the dispatcher is to queue an invocation for execution
 EventStream eventStream()
           
protected abstract  void executeTask(TaskInvocation invocation)
          INTERNAL API
abstract  java.lang.String id()
          Identifier of this dispatcher, corresponds to the full key of the dispatcher configuration.
 long inhabitants()
           
protected  boolean isThroughputDeadlineTimeDefined()
          INTERNAL API
 Mailboxes mailboxes()
           
static void printActors()
           
protected  void register(ActorCell actor)
          If you override it, you must call it.
protected abstract  boolean registerForExecution(Mailbox mbox, boolean hasMessageHint, boolean hasSystemMessageHint)
          Suggest to register the provided mailbox for execution
 void reportFailure(java.lang.Throwable t)
           
static int RESCHEDULED()
           
protected  boolean resubmitOnBlock()
           
protected  void resume(ActorCell actor)
           
static int SCHEDULED()
           
protected abstract  void shutdown()
          Called one time every time an actor is detached from this dispatcher and this dispatcher has no actors left attached Must be idempotent
protected abstract  scala.concurrent.duration.FiniteDuration shutdownTimeout()
          When the dispatcher no longer has any actors registered, how long will it wait until it shuts itself down, defaulting to your akka configs "akka.actor.default-dispatcher.shutdown-timeout" or default specified in reference.conf
protected  void suspend(ActorCell actor)
          After the call to this method, the dispatcher mustn't begin any new message processing for the specified reference
protected abstract  void systemDispatch(ActorCell receiver, SystemMessage invocation)
          Will be called when the dispatcher is to queue an invocation for execution
protected abstract  int throughput()
          INTERNAL API
protected abstract  scala.concurrent.duration.Duration throughputDeadlineTime()
          INTERNAL API
protected  void unbatchedExecute(java.lang.Runnable r)
           
protected  void unregister(ActorCell actor)
          If you override it, you must call it.
static int UNSCHEDULED()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface akka.dispatch.BatchingExecutor
batchable, execute
 
Methods inherited from interface scala.concurrent.ExecutionContext
execute, prepare
 

Constructor Detail

MessageDispatcher

public MessageDispatcher(MessageDispatcherConfigurator configurator)
Method Detail

UNSCHEDULED

public static int UNSCHEDULED()

SCHEDULED

public static int SCHEDULED()

RESCHEDULED

public static int RESCHEDULED()

debug

public static final boolean debug()

actors

public static Index<MessageDispatcher,ActorRef> actors()

printActors

public static void printActors()

configurator

public MessageDispatcherConfigurator configurator()

mailboxes

public Mailboxes mailboxes()

eventStream

public EventStream eventStream()

inhabitants

public final long inhabitants()

createMailbox

protected abstract Mailbox createMailbox(Cell actor,
                                         MailboxType mailboxType)
Creates and returns a mailbox for the given actor.

Parameters:
actor - (undocumented)
mailboxType - (undocumented)
Returns:
(undocumented)

id

public abstract java.lang.String id()
Identifier of this dispatcher, corresponds to the full key of the dispatcher configuration.

Returns:
(undocumented)

attach

public final void attach(ActorCell actor)
Attaches the specified actor instance to this dispatcher, which includes scheduling it to run for the first time (Create() is expected to have been enqueued by the ActorCell upon mailbox creation).

Parameters:
actor - (undocumented)

detach

public final void detach(ActorCell actor)
Detaches the specified actor instance from this dispatcher

Parameters:
actor - (undocumented)

resubmitOnBlock

protected final boolean resubmitOnBlock()
Specified by:
resubmitOnBlock in interface BatchingExecutor

unbatchedExecute

protected final void unbatchedExecute(java.lang.Runnable r)
Specified by:
unbatchedExecute in interface BatchingExecutor

reportFailure

public void reportFailure(java.lang.Throwable t)
Specified by:
reportFailure in interface scala.concurrent.ExecutionContext

register

protected void register(ActorCell actor)
If you override it, you must call it. But only ever once. See "attach" for only invocation.

INTERNAL API

Parameters:
actor - (undocumented)

unregister

protected void unregister(ActorCell actor)
If you override it, you must call it. But only ever once. See "detach" for the only invocation

INTERNAL API

Parameters:
actor - (undocumented)

shutdownTimeout

protected abstract scala.concurrent.duration.FiniteDuration shutdownTimeout()
When the dispatcher no longer has any actors registered, how long will it wait until it shuts itself down, defaulting to your akka configs "akka.actor.default-dispatcher.shutdown-timeout" or default specified in reference.conf

INTERNAL API

Returns:
(undocumented)

suspend

protected void suspend(ActorCell actor)
After the call to this method, the dispatcher mustn't begin any new message processing for the specified reference

Parameters:
actor - (undocumented)

resume

protected void resume(ActorCell actor)

systemDispatch

protected abstract void systemDispatch(ActorCell receiver,
                                       SystemMessage invocation)
Will be called when the dispatcher is to queue an invocation for execution

INTERNAL API

Parameters:
receiver - (undocumented)
invocation - (undocumented)

dispatch

protected abstract void dispatch(ActorCell receiver,
                                 Envelope invocation)
Will be called when the dispatcher is to queue an invocation for execution

INTERNAL API

Parameters:
receiver - (undocumented)
invocation - (undocumented)

registerForExecution

protected abstract boolean registerForExecution(Mailbox mbox,
                                                boolean hasMessageHint,
                                                boolean hasSystemMessageHint)
Suggest to register the provided mailbox for execution

INTERNAL API

Parameters:
mbox - (undocumented)
hasMessageHint - (undocumented)
hasSystemMessageHint - (undocumented)
Returns:
(undocumented)

throughput

protected abstract int throughput()
INTERNAL API

Returns:
(undocumented)

throughputDeadlineTime

protected abstract scala.concurrent.duration.Duration throughputDeadlineTime()
INTERNAL API

Returns:
(undocumented)

isThroughputDeadlineTimeDefined

protected final boolean isThroughputDeadlineTimeDefined()
INTERNAL API

Returns:
(undocumented)

executeTask

protected abstract void executeTask(TaskInvocation invocation)
INTERNAL API

Parameters:
invocation - (undocumented)

shutdown

protected abstract void shutdown()
Called one time every time an actor is detached from this dispatcher and this dispatcher has no actors left attached Must be idempotent

INTERNAL API