Class DefinitionImpl<S extends Enum<S>,C extends Context,D extends Data>

java.lang.Object
io.hektor.fsm.impl.DefinitionImpl<S,C,D>
All Implemented Interfaces:
Definition<S,C,D>

public class DefinitionImpl<S extends Enum<S>,C extends Context,D extends Data> extends Object implements Definition<S,C,D>
Author:
jonas@jonasborjesson.com
  • Constructor Details

    • DefinitionImpl

      public DefinitionImpl(String friendlyName, State<S,C,D>[] states)
      Parameters:
      friendlyName -
      states -
  • Method Details

    • newInstance

      public FSM newInstance(Object uuid, C ctx, D data)
      Specified by:
      newInstance in interface Definition<S extends Enum<S>,C extends Context,D extends Data>
      Returns:
    • newInstance

      public FSM newInstance(Object uuid, C ctx, D data, BiConsumer<S,Object> unhandledEventHandler, TransitionListener<S> transitionListener)
      Description copied from interface: Definition
      Create a new FSM based off of this Definition and assign a unique UUID to this state machine. The FSM itself doesn't actually use the UUID other but may be important for the applications who actually are using this FSM. Also pass in a handler for any events that doesn't match the FSM. This allows you to take action if there are any events that has been missed when creating the FSM. A common best practice is to at the very least log on WARN so your systems can alert you to the fact that your FSM is missing a transition.
      Specified by:
      newInstance in interface Definition<S extends Enum<S>,C extends Context,D extends Data>
      Returns:
    • acceptVisitor

      public void acceptVisitor(FsmVisitor<S,C,D> visitor)
      Specified by:
      acceptVisitor in interface Definition<S extends Enum<S>,C extends Context,D extends Data>