trait StashBuffer[T] extends AnyRef

A non thread safe mutable message buffer that can be used to buffer messages inside actors and then unstash them.

The buffer can hold at most the given capacity number of messages.

Not for user extension.

Annotations
@DoNotInherit()
Source
StashBuffer.scala
Linear Supertypes
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. StashBuffer
  2. AnyRef
  3. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def capacity: Int

    What is the capacity of this buffer.

    What is the capacity of this buffer.

    returns

    the capacity of this buffer

  2. abstract def clear(): Unit

    Removes all messages from the buffer.

  3. abstract def contains[U >: T](message: U): Boolean

    Tests whether this StashBuffer contains a given message.

    Tests whether this StashBuffer contains a given message.

    message

    the message to test

    returns

    true if the buffer contains the message, false otherwise.

  4. abstract def exists(predicate: (T) => Boolean): Boolean

    Tests whether a predicate holds for at least one element of this StashBuffer.

    Tests whether a predicate holds for at least one element of this StashBuffer.

    predicate

    the predicate used to test

    returns

    true if the predicate holds for at least one message, false otherwise.

  5. abstract def foreach(f: (T) => Unit): Unit

    Iterate over all elements of the buffer and apply a function to each element, without removing them.

    Iterate over all elements of the buffer and apply a function to each element, without removing them.

    f

    the function to apply to each element

  6. abstract def head: T

    Return the first element of the message buffer without removing it.

    Return the first element of the message buffer without removing it.

    returns

    the first element or throws NoSuchElementException if the buffer is empty

    Exceptions thrown

    `NoSuchElementException` if the buffer is empty

  7. abstract def isEmpty: Boolean

    Check if the message buffer is empty.

    Check if the message buffer is empty.

    returns

    if the buffer is empty

  8. abstract def isFull: Boolean

    returns

    true if no more messages can be added, i.e. size equals the capacity of the stash buffer

  9. abstract def nonEmpty: Boolean

    Check if the message buffer is not empty.

    Check if the message buffer is not empty.

    returns

    if the buffer is not empty

  10. abstract def size: Int

    How many elements are in the message buffer.

    How many elements are in the message buffer.

    returns

    the number of elements in the message buffer

  11. abstract def stash(message: T): StashBuffer[T]

    Add one element to the end of the message buffer.

    Add one element to the end of the message buffer.

    message

    the message to buffer

    returns

    this message buffer

    Exceptions thrown

    is thrown if the buffer StashBuffer#isFull.

  12. abstract def unstash(behavior: Behavior[T], numberOfMessages: Int, wrap: (T) => T): Behavior[T]

    Transition to the given behavior and process numberOfMessages of the stashed messages.

    Transition to the given behavior and process numberOfMessages of the stashed messages. The messages will be processed in the same order they arrived.

    The purpose of this method, compared to unstashAll is to unstash a limited number of messages and then send a message to self before continuing unstashing more. That means that other new messages may arrive in-between and those must be stashed to keep the original order of messages. To differentiate between unstashed and new incoming messages the unstashed messages can be wrapped in another message with the wrap.

    If an exception is thrown by processing a message a proceeding messages and the message causing the exception have been removed from the StashBuffer, but unprocessed messages remain.

    It's allowed to stash messages while unstashing. Those newly added messages will not be processed by this call and have to be unstashed in another call.

    The behavior passed to unstash must not be unhandled.

  13. abstract def unstashAll(behavior: Behavior[T]): Behavior[T]

    Transition to the given behavior and process all stashed messages.

    Transition to the given behavior and process all stashed messages. Messages will be processed in the same order they arrived. The StashBuffer will be empty after processing all messages, unless an exception is thrown or messages are stashed while unstashing.

    If an exception is thrown by processing a message a proceeding messages and the message causing the exception have been removed from the StashBuffer, but unprocessed messages remain.

    It's allowed to stash messages while unstashing. Those newly added messages will not be processed by this call and have to be unstashed in another call.

    The behavior passed to unstashAll must not be unhandled.