org.eclipse.net4j.util.fsm
Class FiniteStateMachine<STATE extends Enum<?>,EVENT extends Enum<?>,SUBJECT>
java.lang.Object
org.eclipse.net4j.util.event.Notifier
org.eclipse.net4j.util.lifecycle.Lifecycle
org.eclipse.net4j.util.fsm.FiniteStateMachine<STATE,EVENT,SUBJECT>
- All Implemented Interfaces:
- INotifier, ILifecycle, ILifecycle.DeferrableActivation
- Direct Known Subclasses:
- Negotiator
- public abstract class FiniteStateMachine<STATE extends Enum<?>,EVENT extends Enum<?>,SUBJECT>
- extends Lifecycle
A finite state machine that is based on a matrix of
transitions
.
A finite state machine can fire the following events:
Method Summary |
protected STATE |
changeState(SUBJECT subject,
STATE state)
|
protected ITransition<STATE,EVENT,SUBJECT,?> |
createFailTransition(STATE state,
EVENT event)
|
protected ITransition<STATE,EVENT,SUBJECT,?> |
createIgnoreTransition(STATE state,
EVENT event)
|
protected String |
formatFailMessage(SUBJECT subject,
STATE state,
EVENT event,
Object data)
|
protected String |
formatIgnoreMessage(SUBJECT subject,
STATE state,
EVENT event,
Object data)
|
protected String |
formatProcessMessage(SUBJECT subject,
STATE state,
EVENT event,
Object data)
|
EVENT[] |
getEvents()
|
protected abstract STATE |
getState(SUBJECT subject)
|
STATE[] |
getStates()
|
ITransition<STATE,EVENT,SUBJECT,?> |
getTransition(STATE state,
EVENT event)
|
void |
init(STATE state,
EVENT event,
ITransition<STATE,EVENT,SUBJECT,?> transition)
|
void |
init(STATE state,
EVENT event,
STATE targetState)
|
void |
initAll(ITransition<STATE,EVENT,SUBJECT,?> transition)
|
void |
initAll(STATE targetState)
|
void |
initEvents(STATE state,
ITransition<STATE,EVENT,SUBJECT,?> transition)
|
void |
initEvents(STATE state,
STATE targetState)
|
void |
initStates(EVENT event,
ITransition<STATE,EVENT,SUBJECT,?> transition)
|
void |
initStates(EVENT event,
STATE targetState)
|
|
process(SUBJECT subject,
EVENT event,
DATA data)
|
protected abstract void |
setState(SUBJECT subject,
STATE state)
|
Methods inherited from class org.eclipse.net4j.util.lifecycle.Lifecycle |
activate, checkActive, checkArg, checkArg, checkInactive, checkNull, checkState, checkState, deactivate, deferredActivate, doActivate, doAfterActivate, doBeforeActivate, doBeforeDeactivate, doDeactivate, dump, getLifecycleState, isActive, isDeferredActivation, toString |
Methods inherited from class org.eclipse.net4j.util.event.Notifier |
addListener, fireEvent, fireEvent, fireEvent, fireThrowable, firstListenerAdded, getListeners, getNotificationService, hasListeners, lastListenerRemoved, removeListener |
IGNORE
public static final ITransition IGNORE
FAIL
public static final ITransition FAIL
FiniteStateMachine
public FiniteStateMachine(Class<STATE> stateEnum,
Class<EVENT> eventEnum,
ITransition<STATE,EVENT,SUBJECT,?> defaultTransition)
FiniteStateMachine
public FiniteStateMachine(Class<STATE> stateEnum,
Class<EVENT> eventEnum)
getStates
public final STATE[] getStates()
getEvents
public final EVENT[] getEvents()
getTransition
public final ITransition<STATE,EVENT,SUBJECT,?> getTransition(STATE state,
EVENT event)
init
public final void init(STATE state,
EVENT event,
STATE targetState)
init
public final void init(STATE state,
EVENT event,
ITransition<STATE,EVENT,SUBJECT,?> transition)
initEvents
public final void initEvents(STATE state,
STATE targetState)
initEvents
public final void initEvents(STATE state,
ITransition<STATE,EVENT,SUBJECT,?> transition)
initStates
public final void initStates(EVENT event,
STATE targetState)
initStates
public final void initStates(EVENT event,
ITransition<STATE,EVENT,SUBJECT,?> transition)
initAll
public final void initAll(STATE targetState)
initAll
public final void initAll(ITransition<STATE,EVENT,SUBJECT,?> transition)
process
public final <DATA> void process(SUBJECT subject,
EVENT event,
DATA data)
createIgnoreTransition
protected ITransition<STATE,EVENT,SUBJECT,?> createIgnoreTransition(STATE state,
EVENT event)
createFailTransition
protected ITransition<STATE,EVENT,SUBJECT,?> createFailTransition(STATE state,
EVENT event)
formatProcessMessage
protected String formatProcessMessage(SUBJECT subject,
STATE state,
EVENT event,
Object data)
formatIgnoreMessage
protected String formatIgnoreMessage(SUBJECT subject,
STATE state,
EVENT event,
Object data)
formatFailMessage
protected String formatFailMessage(SUBJECT subject,
STATE state,
EVENT event,
Object data)
getState
protected abstract STATE getState(SUBJECT subject)
setState
protected abstract void setState(SUBJECT subject,
STATE state)
changeState
protected STATE changeState(SUBJECT subject,
STATE state)
- Since:
- 3.0
Copyright (c) 2011, 2012 Eike Stepper (Berlin, Germany) and others.