Package com.couchbase.client.core.state
Class AbstractStateMachine<S extends Enum>
java.lang.Object
com.couchbase.client.core.state.AbstractStateMachine<S>
- All Implemented Interfaces:
Stateful<S>
- Direct Known Subclasses:
AbstractDynamicService
,AbstractEndpoint
,AbstractStateZipper
,CouchbaseNode
,PooledService
Abstract
Stateful
implementation which acts like a simple state machine.
This class is thread safe, so state transitions can be issued from any thread without any further synchronization.- Since:
- 1.0
- Author:
- Michael Nitschinger
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
AbstractStateMachine
(S initialState) Creates a new state machine. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Returns true if there are subscribers observing the state stream.final boolean
Check if the given state is the same as the current one.final S
state()
Returns the current state.final rx.Observable<S>
states()
Returns a infinite observable which gets updated when the state of the component changes.protected void
transitionState
(S newState) Transition into a new state.
-
Constructor Details
-
AbstractStateMachine
Creates a new state machine.- Parameters:
initialState
- the initial state of the state machine.
-
-
Method Details
-
states
Description copied from interface:Stateful
Returns a infinite observable which gets updated when the state of the component changes. -
state
Description copied from interface:Stateful
Returns the current state. -
isState
Description copied from interface:Stateful
Check if the given state is the same as the current one. -
hasSubscribers
public boolean hasSubscribers()Description copied from interface:Stateful
Returns true if there are subscribers observing the state stream.- Specified by:
hasSubscribers
in interfaceStateful<S extends Enum>
- Returns:
- true if at least one does, false otherwise.
-
transitionState
Transition into a new state. This method is intentionally not public, because the subclass should only be responsible for the actual transitions, the other components only react on those transitions eventually.- Parameters:
newState
- the states to transition into.
-