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

public class AbstractStateMachine<S extends Enum>
extends Object
implements Stateful<S>
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

    Constructors
    Modifier Constructor Description
    protected AbstractStateMachine​(S initialState)
    Creates a new state machine.
  • Method Summary

    Modifier and Type Method Description
    boolean hasSubscribers()
    Returns true if there are subscribers observing the state stream.
    boolean isState​(S state)
    Check if the given state is the same as the current one.
    S state()
    Returns the current state.
    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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AbstractStateMachine

      protected AbstractStateMachine​(S initialState)
      Creates a new state machine.
      Parameters:
      initialState - the initial state of the state machine.
  • Method Details

    • states

      public final rx.Observable<S> states()
      Description copied from interface: Stateful
      Returns a infinite observable which gets updated when the state of the component changes.
      Specified by:
      states in interface Stateful<S extends Enum>
      Returns:
      a Observable updated with state transitions.
    • state

      public final S state()
      Description copied from interface: Stateful
      Returns the current state.
      Specified by:
      state in interface Stateful<S extends Enum>
      Returns:
      the current state.
    • isState

      public final boolean isState​(S state)
      Description copied from interface: Stateful
      Check if the given state is the same as the current one.
      Specified by:
      isState in interface Stateful<S extends Enum>
      Parameters:
      state - the stats to check against.
      Returns:
      true if it is the same, false otherwise.
    • hasSubscribers

      public boolean hasSubscribers()
      Description copied from interface: Stateful
      Returns true if there are subscribers observing the state stream.
      Specified by:
      hasSubscribers in interface Stateful<S extends Enum>
      Returns:
      true if at least one does, false otherwise.
    • transitionState

      protected void transitionState​(S newState)
      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.