akka.routing
Class SmallestMailboxRoutingLogic

java.lang.Object
  extended by akka.routing.SmallestMailboxRoutingLogic
All Implemented Interfaces:
NoSerializationVerificationNeeded, RoutingLogic

public class SmallestMailboxRoutingLogic
extends java.lang.Object
implements RoutingLogic

Tries to send to the non-suspended routee with fewest messages in mailbox. The selection is done in this order:


Constructor Summary
SmallestMailboxRoutingLogic()
           
 
Method Summary
static SmallestMailboxRoutingLogic apply()
           
protected  boolean hasMessages(Routee a)
          Returns true if the actor currently has any pending messages in the mailbox, i.e.
protected  boolean isProcessingMessage(Routee a)
          Returns true if the actor is currently processing a message.
protected  boolean isSuspended(Routee a)
          Returns true if the actor is currently suspended.
protected  boolean isTerminated(Routee a)
           
protected  int numberOfMessages(Routee a)
          Returns the number of pending messages in the mailbox of the actor.
 Routee select(java.lang.Object message, scala.collection.immutable.IndexedSeq<Routee> routees)
          Pick the destination for a given message.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SmallestMailboxRoutingLogic

public SmallestMailboxRoutingLogic()
Method Detail

apply

public static SmallestMailboxRoutingLogic apply()

select

public Routee select(java.lang.Object message,
                     scala.collection.immutable.IndexedSeq<Routee> routees)
Description copied from interface: RoutingLogic
Pick the destination for a given message. Normally it picks one of the passed routees, but in the end it is up to the implementation to return whatever Routee to use for sending a specific message.

When implemented from Java it can be good to know that routees.apply(index) can be used to get an element from the IndexedSeq.

Specified by:
select in interface RoutingLogic
Parameters:
message - (undocumented)
routees - (undocumented)
Returns:
(undocumented)

isTerminated

protected boolean isTerminated(Routee a)

isProcessingMessage

protected boolean isProcessingMessage(Routee a)
Returns true if the actor is currently processing a message. It will always return false for remote actors. Method is exposed to subclasses to be able to implement custom routers based on mailbox and actor internal state.

Parameters:
a - (undocumented)
Returns:
(undocumented)

hasMessages

protected boolean hasMessages(Routee a)
Returns true if the actor currently has any pending messages in the mailbox, i.e. the mailbox is not empty. It will always return false for remote actors. Method is exposed to subclasses to be able to implement custom routers based on mailbox and actor internal state.

Parameters:
a - (undocumented)
Returns:
(undocumented)

isSuspended

protected boolean isSuspended(Routee a)
Returns true if the actor is currently suspended. It will always return false for remote actors. Method is exposed to subclasses to be able to implement custom routers based on mailbox and actor internal state.

Parameters:
a - (undocumented)
Returns:
(undocumented)

numberOfMessages

protected int numberOfMessages(Routee a)
Returns the number of pending messages in the mailbox of the actor. It will always return 0 for remote actors. Method is exposed to subclasses to be able to implement custom routers based on mailbox and actor internal state.

Parameters:
a - (undocumented)
Returns:
(undocumented)