Package io.hektor.fsm.impl
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidacceptVisitor(FsmVisitor<S, C, D> visitor) newInstance(Object uuid, C ctx, D data) newInstance(Object uuid, C ctx, D data, BiConsumer<S, Object> unhandledEventHandler, TransitionListener<S> transitionListener) Create a newFSMbased off of thisDefinitionand assign a unique UUID to this state machine.
-
Constructor Details
-
DefinitionImpl
- Parameters:
friendlyName-states-
-
-
Method Details
-
newInstance
- Specified by:
newInstancein interfaceDefinition<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:DefinitionCreate a newFSMbased off of thisDefinitionand 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:
newInstancein interfaceDefinition<S extends Enum<S>,C extends Context, D extends Data> - Returns:
-
acceptVisitor
- Specified by:
acceptVisitorin interfaceDefinition<S extends Enum<S>,C extends Context, D extends Data>
-