S
- the type of the state for the FiniteStateMachine
public static class NonBlockingFiniteStateMachine.CoalescedEvent<S extends Enum<S>> extends Object implements LifecycleAwareEvent<S>
NonBlockingFiniteStateMachine.CoalescedEvent
is a LifecycleAwareEvent
that coalesces other (wrapped) Event
s with the same discriminator so that only one Event
actually executes.
For example: Given 10 Event
s submitted to a NonBlockingFiniteStateMachine
with the same discriminator, only one of the said Event
s will be processed. All others will be discarded. Once the NonBlockingFiniteStateMachine.CoalescedEvent
has been processed, a new batch may be created when another NonBlockingFiniteStateMachine.CoalescedEvent
of the same discriminator is submitted.
The actual Event
processed depends on the mode of coalescing required. The first NonBlockingFiniteStateMachine.CoalescedEvent
submitted to a NonBlockingFiniteStateMachine
for a specific discriminator effectively starts the coalescing of Event
s for the said discriminator. When the mode is set to Process#FIRST
, then the first Event
(starting the coalescing) will be processed and others will be discarded. When the mode is set of Process#MOST_RECENT
then the most recently submitted Event
will be processed and likewise, all others for the same discriminator will be discarded.
Modifier and Type | Class and Description |
---|---|
static class |
NonBlockingFiniteStateMachine.CoalescedEvent.Discriminator
A
NonBlockingFiniteStateMachine.CoalescedEvent.Discriminator is an object that is used to uniquely differentiate events to be coalesced, scoped by a NonBlockingFiniteStateMachine . |
static class |
NonBlockingFiniteStateMachine.CoalescedEvent.Process
The
NonBlockingFiniteStateMachine.CoalescedEvent to process. |
Constructor and Description |
---|
CoalescedEvent(Event<S> event)
Constructs a
NonBlockingFiniteStateMachine.CoalescedEvent of the specified Event type using Process#FIRST . |
CoalescedEvent(Event<S> event, NonBlockingFiniteStateMachine.CoalescedEvent.Process mode)
Constructs a
NonBlockingFiniteStateMachine.CoalescedEvent of the specified Event type. |
CoalescedEvent(Event<S> event, NonBlockingFiniteStateMachine.CoalescedEvent.Process mode, Object discriminator)
Constructs a
NonBlockingFiniteStateMachine.CoalescedEvent with the specified discriminator and Event . |
Modifier and Type | Method and Description |
---|---|
S |
getDesiredState(S state, 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 CoalescedEvent(Event<S> event)
NonBlockingFiniteStateMachine.CoalescedEvent
of the specified Event
type using Process#FIRST
.event
- the Event
to be executed when coalescedpublic CoalescedEvent(Event<S> event, NonBlockingFiniteStateMachine.CoalescedEvent.Process mode)
NonBlockingFiniteStateMachine.CoalescedEvent
of the specified Event
type.event
- the Event
to be coalescedmode
- which NonBlockingFiniteStateMachine.CoalescedEvent
s to processpublic CoalescedEvent(Event<S> event, NonBlockingFiniteStateMachine.CoalescedEvent.Process mode, Object discriminator)
NonBlockingFiniteStateMachine.CoalescedEvent
with the specified discriminator and Event
.event
- the Event
to be coalescedmode
- which NonBlockingFiniteStateMachine.CoalescedEvent
s to processdiscriminator
- the descriminator used to uniquely coalesce the Event
public S getDesiredState(S state, ExecutionContext context)
FiniteStateMachine
for the Event
given the current state of the FiniteStateMachine
.getDesiredState
in interface Event<S extends Enum<S>>
state
- the current state of the FiniteStateMachine
context
- the ExecutionContext
for the Event
FiniteStateMachine
or null
if no transition is requiredpublic 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