akka.dispatch.sysmsg
Class EarliestFirstSystemMessageList

java.lang.Object
  extended by scala.AnyVal
      extended by akka.dispatch.sysmsg.EarliestFirstSystemMessageList

public class EarliestFirstSystemMessageList
extends scala.AnyVal

INTERNAL API

Value class supporting list operations on system messages. The next field of SystemMessage is hidden, and can only accessed through the value classes LatestFirstSystemMessageList and EarliestFirstSystemMessageList, abstracting over the fact that system messages are the list nodes themselves. If used properly, this stays a compile time construct without any allocation overhead.

This list is mutable.

This list type also encodes that the messages contained are in reverse order, i.e. the head of the list is the latest appended element.


Constructor Summary
EarliestFirstSystemMessageList(SystemMessage head)
           
 
Method Summary
 SystemMessage head()
           
 boolean isEmpty()
          Indicates if the list is empty or not.
 boolean nonEmpty()
          Indicates if the list has at least one element or not.
 LatestFirstSystemMessageList reverse()
          Reverses the list.
 int size()
          Indicates if the list is empty or not.
 EarliestFirstSystemMessageList tail()
          Gives back the list containing all the elements except the first.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EarliestFirstSystemMessageList

public EarliestFirstSystemMessageList(SystemMessage head)
Method Detail

head

public SystemMessage head()

isEmpty

public final boolean isEmpty()
Indicates if the list is empty or not. This operation has constant cost.


nonEmpty

public final boolean nonEmpty()
Indicates if the list has at least one element or not. This operation has constant cost.


size

public final int size()
Indicates if the list is empty or not. This operation has constant cost.


tail

public final EarliestFirstSystemMessageList tail()
Gives back the list containing all the elements except the first. This operation has constant cost.

*Warning:* as the underlying list nodes (the SystemMessage instances) are mutable, care should be taken when passing the tail to other methods. SystemMessage.unlink() should be called on the head if one wants to detach the tail permanently.


reverse

public final LatestFirstSystemMessageList reverse()
Reverses the list. This operation mutates the underlying list. The cost of the call to reverse is linear in the number of elements.

The type of the returned list is of the opposite order: LatestFirstSystemMessageList