Package akka.actor

Interface FSM<S,​D>

    • Method Detail

      • akka$actor$FSM$_setter_$Event_$eq

        void akka$actor$FSM$_setter_$Event_$eq​(FSM.Event$ x$1)
      • akka$actor$FSM$_setter_$StopEvent_$eq

        void akka$actor$FSM$_setter_$StopEvent_$eq​(FSM.StopEvent$ x$1)
      • akka$actor$FSM$_setter_$StateTimeout_$eq

        void akka$actor$FSM$_setter_$StateTimeout_$eq​(FSM.StateTimeout$ x$1)
        This case object is received in case of a state timeout.
        Parameters:
        x$1 - (undocumented)
      • super$postStop

        void super$postStop()
        Call onTermination hook; if you want to retain this behavior when overriding make sure to call super.postStop().

        Please note that this method is called by default from preRestart(), so override that one if onTermination shall not be called during restart.

      • $minus$greater

        FSM.$minus$greater$ $minus$greater()
        This extractor is just convenience for matching a (S, S) pair, including a reminder what the new state is.
        Returns:
        (undocumented)
      • StateTimeout

        FSM.StateTimeout$ StateTimeout()
        This case object is received in case of a state timeout.
        Returns:
        (undocumented)
      • when

        void when​(S stateName,
                  scala.concurrent.duration.FiniteDuration stateTimeout,
                  scala.PartialFunction<FSM.Event<D>,​FSM.State<S,​D>> stateFunction)
        Insert a new StateFunction at the end of the processing chain for the given state. If the stateTimeout parameter is set, entering this state without a differing explicit timeout setting will trigger a StateTimeout event; the same is true when using #stay.

        Parameters:
        stateName - designator for the state
        stateTimeout - default state timeout for this state
        stateFunction - partial function describing response to input
      • when$default$2

        scala.concurrent.duration.FiniteDuration when$default$2()
      • startWith

        void startWith​(S stateName,
                       D stateData,
                       scala.Option<scala.concurrent.duration.FiniteDuration> timeout)
        Set initial state. Call this method from the constructor before the initialize() method. If different state is needed after a restart this method, followed by initialize(), can be used in the actor life cycle hooks Actor.preStart() and Actor.postRestart(java.lang.Throwable).

        Parameters:
        stateName - initial state designator
        stateData - initial state data
        timeout - state timeout for the initial state, overriding the default timeout for that state
      • startWith$default$3

        scala.Option<scala.concurrent.duration.FiniteDuration> startWith$default$3()
      • stay

        FSM.State<S,​D> stay()
        Produce "empty" transition descriptor. Return this from a state function when no state change is to be effected.

        No transition event will be triggered by stay(). If you want to trigger an event like S -&gt; S for onTransition to handle use goto instead.

        Returns:
        descriptor for staying in current state
      • stop

        FSM.State<S,​D> stop()
        Produce change descriptor to stop this FSM actor with reason "Normal".
        Returns:
        (undocumented)
      • stop

        FSM.State<S,​D> stop​(FSM.Reason reason)
        Produce change descriptor to stop this FSM actor including specified reason.
        Parameters:
        reason - (undocumented)
        Returns:
        (undocumented)
      • stop

        FSM.State<S,​D> stop​(FSM.Reason reason,
                                  D stateData)
        Produce change descriptor to stop this FSM actor including specified reason.
        Parameters:
        reason - (undocumented)
        stateData - (undocumented)
        Returns:
        (undocumented)
      • startTimerWithFixedDelay

        void startTimerWithFixedDelay​(java.lang.String name,
                                      java.lang.Object msg,
                                      scala.concurrent.duration.FiniteDuration delay)
        Schedules a message to be sent repeatedly to the self actor with a fixed delay between messages.

        It will not compensate the delay between messages if scheduling is delayed longer than specified for some reason. The delay between sending of subsequent messages will always be (at least) the given delay.

        In the long run, the frequency of messages will generally be slightly lower than the reciprocal of the specified delay.

        Each timer has a name and if a new timer with same name is started the previous is cancelled. It is guaranteed that a message from the previous timer is not received, even if it was already enqueued in the mailbox when the new timer was started.

        Parameters:
        name - (undocumented)
        msg - (undocumented)
        delay - (undocumented)
      • startTimerAtFixedRate

        void startTimerAtFixedRate​(java.lang.String name,
                                   java.lang.Object msg,
                                   scala.concurrent.duration.FiniteDuration interval)
        Schedules a message to be sent repeatedly to the self actor with a given frequency.

        It will compensate the delay for a subsequent message if the sending of previous message was delayed more than specified. In such cases, the actual message interval will differ from the interval passed to the method.

        If the execution is delayed longer than the interval, the subsequent message will be sent immediately after the prior one. This also has the consequence that after long garbage collection pauses or other reasons when the JVM was suspended all "missed" messages will be sent when the process wakes up again.

        In the long run, the frequency of messages will be exactly the reciprocal of the specified interval.

        Warning: startTimerAtFixedRate can result in bursts of scheduled messages after long garbage collection pauses, which may in worst case cause undesired load on the system. Therefore startTimerWithFixedDelay is often preferred.

        Each timer has a name and if a new timer with same name is started the previous is cancelled. It is guaranteed that a message from the previous timer is not received, even if it was already enqueued in the mailbox when the new timer was started.

        Parameters:
        name - (undocumented)
        msg - (undocumented)
        interval - (undocumented)
      • startSingleTimer

        void startSingleTimer​(java.lang.String name,
                              java.lang.Object msg,
                              scala.concurrent.duration.FiniteDuration delay)
        Start a timer that will send msg once to the self actor after the given delay.

        Each timer has a name and if a new timer with same name is started the previous is cancelled. It is guaranteed that a message from the previous timer is not received, even if it was already enqueued in the mailbox when the new timer was started.

        Parameters:
        name - (undocumented)
        msg - (undocumented)
        delay - (undocumented)
      • setTimer

        void setTimer​(java.lang.String name,
                      java.lang.Object msg,
                      scala.concurrent.duration.FiniteDuration timeout,
                      boolean repeat)
        Deprecated.
        Use startSingleTimer, startTimerWithFixedDelay or startTimerAtFixedRate instead. This has the same semantics as startTimerAtFixedRate, but startTimerWithFixedDelay is often preferred. Since 2.6.0.
        Schedule named timer to deliver message after given delay, possibly repeating. Any existing timer with the same name will automatically be canceled before adding the new timer.
        Parameters:
        name - identifier to be used with cancelTimer()
        msg - message to be delivered
        timeout - delay of first message delivery and between subsequent messages
        repeat - send once if false, scheduleAtFixedRate if true
      • setTimer$default$4

        boolean setTimer$default$4()
      • startTimer

        void startTimer​(java.lang.String name,
                        java.lang.Object msg,
                        scala.concurrent.duration.FiniteDuration timeout,
                        FSM.TimerMode mode)
      • cancelTimer

        void cancelTimer​(java.lang.String name)
        Cancel named timer, ensuring that the message is not subsequently delivered (no race).
        Parameters:
        name - of the timer to cancel
      • isTimerActive

        boolean isTimerActive​(java.lang.String name)
        Inquire whether the named timer is still active. Returns true unless the timer does not exist, has previously been canceled or if it was a single-shot timer whose message was already received.
        Parameters:
        name - (undocumented)
        Returns:
        (undocumented)
      • setStateTimeout

        void setStateTimeout​(S state,
                             scala.Option<scala.concurrent.duration.FiniteDuration> timeout)
        Set state timeout explicitly. This method can safely be used from within a state handler.
        Parameters:
        state - (undocumented)
        timeout - (undocumented)
      • isStateTimerActive

        boolean isStateTimerActive()
        INTERNAL API, used for testing.
        Returns:
        (undocumented)
      • onTransition

        void onTransition​(scala.PartialFunction<scala.Tuple2<S,​S>,​scala.runtime.BoxedUnit> transitionHandler)
        Set handler which is called upon each state transition, i.e. not when staying in the same state. This may use the pair extractor defined in the FSM companion object like so:

         onTransition {
           case Old -&gt; New =&gt; doSomething
         }
         

        It is also possible to supply a 2-ary function object:

         onTransition(handler _)
        
         private def handler(from: S, to: S) { ... }
         

        The underscore is unfortunately necessary to enable the nicer syntax shown above (it uses the implicit conversion total2pf under the hood).

        Multiple handlers may be installed, and every one of them will be called, not only the first one matching.

        Parameters:
        transitionHandler - (undocumented)
      • total2pf

        scala.PartialFunction<scala.Tuple2<S,​S>,​scala.runtime.BoxedUnit> total2pf​(scala.Function2<S,​S,​scala.runtime.BoxedUnit> transitionHandler)
        Convenience wrapper for using a total function instead of a partial function literal. To be used with onTransition.
        Parameters:
        transitionHandler - (undocumented)
        Returns:
        (undocumented)
      • onTermination

        void onTermination​(scala.PartialFunction<FSM.StopEvent<S,​D>,​scala.runtime.BoxedUnit> terminationHandler)
        Set handler which is called upon termination of this FSM actor. Calling this method again will overwrite the previous contents.
        Parameters:
        terminationHandler - (undocumented)
      • whenUnhandled

        void whenUnhandled​(scala.PartialFunction<FSM.Event<D>,​FSM.State<S,​D>> stateFunction)
        Set handler which is called upon reception of unhandled messages. Calling this method again will overwrite the previous contents.

        The current state may be queried using stateName.

        Parameters:
        stateFunction - (undocumented)
      • stateName

        S stateName()
        Return current state name (i.e. object of type S)
        Returns:
        (undocumented)
      • stateData

        D stateData()
        Return current state data (i.e. object of type D)
        Returns:
        (undocumented)
      • nextStateData

        D nextStateData()
        Return next state data (available in onTransition handlers)
        Returns:
        (undocumented)
      • debugEvent

        boolean debugEvent()
      • currentState_$eq

        void currentState_$eq​(FSM.State<S,​D> x$1)
      • timeoutFuture_$eq

        void timeoutFuture_$eq​(scala.Option<Cancellable> x$1)
      • nextState_$eq

        void nextState_$eq​(FSM.State<S,​D> x$1)
      • generation_$eq

        void generation_$eq​(long x$1)
      • register

        void register​(S name,
                      scala.PartialFunction<FSM.Event<D>,​FSM.State<S,​D>> function,
                      scala.Option<scala.concurrent.duration.FiniteDuration> timeout)
      • handleEvent_$eq

        void handleEvent_$eq​(scala.PartialFunction<FSM.Event<D>,​FSM.State<S,​D>> x$1)
      • terminateEvent_$eq

        void terminateEvent_$eq​(scala.PartialFunction<FSM.StopEvent<S,​D>,​scala.runtime.BoxedUnit> x$1)
      • transitionEvent_$eq

        void transitionEvent_$eq​(scala.collection.immutable.List<scala.PartialFunction<scala.Tuple2<S,​S>,​scala.runtime.BoxedUnit>> x$1)
      • handleTransition

        void handleTransition​(S prev,
                              S next)
      • receive

        scala.PartialFunction<java.lang.Object,​scala.runtime.BoxedUnit> receive()
        Description copied from interface: Actor
        Scala API: This defines the initial actor behavior, it must return a partial function with the actor logic.
        Specified by:
        receive in interface Actor
        Returns:
        (undocumented)
      • processMsg

        void processMsg​(java.lang.Object value,
                        java.lang.Object source)
      • processEvent

        void processEvent​(FSM.Event<D> event,
                          java.lang.Object source)
      • applyState

        void applyState​(FSM.State<S,​D> nextState)
      • makeTransition

        void makeTransition​(FSM.State<S,​D> nextState)
      • postStop

        void postStop()
        Call onTermination hook; if you want to retain this behavior when overriding make sure to call super.postStop().

        Please note that this method is called by default from preRestart(), so override that one if onTermination shall not be called during restart.

        Specified by:
        postStop in interface Actor
      • terminate

        void terminate​(FSM.State<S,​D> nextState)
      • logTermination

        void logTermination​(FSM.Reason reason)
        By default FSM.Failure is logged at error level and other reason types are not logged. It is possible to override this behavior.
        Parameters:
        reason - (undocumented)