S
- the state type of the FiniteStateMachine
public static class NonBlockingFiniteStateMachine.SubsequentEvent<S extends Enum<S>> extends Object implements LifecycleAwareEvent<S>
NonBlockingFiniteStateMachine.SubsequentEvent
is an Event
that ensures that
another (wrapped) Event
to occur if an only if the FiniteStateMachine
is at a certain transition count. Should an
attempt to process the wrapped Event
occur at another
transition count, processing of the said event is ignored.
NonBlockingFiniteStateMachine.SubsequentEvent
s are designed to provide the ability for
future scheduled Event
s to be skipped if another Event
has been processed between the time when the NonBlockingFiniteStateMachine.SubsequentEvent
was requested to be processed and when it was actually processed. That
is, the purpose of this is to allow an Event
to be skipped if
other Event
s interleave between the time when the said Event
was actually scheduled and when it was actually meant to be
processed.
Constructor and Description |
---|
SubsequentEvent(Event<S> event)
Constructs a
NonBlockingFiniteStateMachine.SubsequentEvent . |
Modifier and Type | Method and Description |
---|---|
S |
getDesiredState(S currentState,
ExecutionContext context)
Determines the desired state of the
FiniteStateMachine for the
Event given the current state of the FiniteStateMachine . |
boolean |
onAccept(ExecutionContext context)
Called by a
FiniteStateMachine when the LifecycleAwareEvent
is initially about to be accepted for processing. |
void |
onProcessed(ExecutionContext context)
Called by a
FiniteStateMachine when the LifecycleAwareEvent
has been processed. |
void |
onProcessing(ExecutionContext context)
Called by a
FiniteStateMachine when the LifecycleAwareEvent
is about to be processed. |
String |
toString() |
public SubsequentEvent(Event<S> event)
NonBlockingFiniteStateMachine.SubsequentEvent
.event
- the actual event to processpublic boolean onAccept(ExecutionContext context)
FiniteStateMachine
when the LifecycleAwareEvent
is initially about to be accepted for processing.onAccept
in interface LifecycleAwareEvent<S extends Enum<S>>
context
- the ExecutionContext
for the Event
true
if the Event
should be accepted, or
false
if the FiniteStateMachine
should
ignore the LifecycleAwareEvent
public void onProcessed(ExecutionContext context)
FiniteStateMachine
when the LifecycleAwareEvent
has been processed.onProcessed
in interface LifecycleAwareEvent<S extends Enum<S>>
context
- the ExecutionContext
for the Event
public void onProcessing(ExecutionContext context)
FiniteStateMachine
when the LifecycleAwareEvent
is about to be processed.onProcessing
in interface LifecycleAwareEvent<S extends Enum<S>>
context
- the ExecutionContext
for the Event
public S getDesiredState(S currentState, ExecutionContext context)
FiniteStateMachine
for the
Event
given the current state of the FiniteStateMachine
.getDesiredState
in interface Event<S extends Enum<S>>
currentState
- the current state of the FiniteStateMachine
context
- the ExecutionContext
for the Event
FiniteStateMachine
or
null
if no transition is required