abstract class EffectBuilder[State] extends Effect[State]

A command handler returns an Effect directive that defines what state to persist.

Additional side effects can be performed in the callback thenRun

Instances of Effect are available through factories DurableStateBehavior.Effect.

Not intended for user extension.

Self Type
EffectImpl[State]
Annotations
@DoNotInherit()
Source
Effect.scala
Linear Supertypes
Effect[State], AnyRef, Any
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. EffectBuilder
  2. Effect
  3. AnyRef
  4. 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

Instance Constructors

  1. new EffectBuilder()

Abstract Value Members

  1. abstract def thenNoReply(): ReplyEffect[State]

    When is used there will be compilation errors if the returned effect isn't a ReplyEffect.

    When is used there will be compilation errors if the returned effect isn't a ReplyEffect. This thenNoReply can be used as a conscious decision that a reply shouldn't be sent for a specific command or the reply will be sent later.

  2. abstract def thenStop(): EffectBuilder[State]

    The side effect is to stop the actor

  3. abstract def thenUnstashAll(): Effect[State]

    Unstash the commands that were stashed with EffectFactories.stash.

    Unstash the commands that were stashed with EffectFactories.stash.

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

Concrete Value Members

  1. def thenReply[ReplyMessage](replyTo: ActorRef[ReplyMessage], replyWithMessage: Function[State, ReplyMessage]): ReplyEffect[State]

    Send a reply message to the command.

    Send a reply message to the command. The type of the reply message must conform to the type specified by the passed replyTo ActorRef.

    This has the same semantics as replyTo.tell.

    It is provided as a convenience (reducing boilerplate) and a way to enforce that replies are not forgotten when the DurableStateBehavior is created with DurableStateBehaviorWithEnforcedReplies. When withEnforcedReplies is used there will be compilation errors if the returned effect isn't a ReplyEffect. The reply message will be sent also if withEnforcedReplies isn't used, but then the compiler will not help finding mistakes.

  2. final def thenRun(callback: japi.function.Effect): EffectBuilder[State]

    Run the given callback.

    Run the given callback. Callbacks are run sequentially.

  3. final def thenRun[NewState <: State](callback: Procedure[NewState]): EffectBuilder[State]

    Run the given callback.

    Run the given callback. Callbacks are run sequentially.

    NewState

    The type of the state after the state is persisted, when not specified will be the same as State but if a known subtype of State is expected that can be specified instead (preferably by explicitly typing the lambda parameter like so: thenRun((SubState state) -> { ... })). If the state is not of the expected type an java.lang.ClassCastException is thrown.