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
    Returns true if there are subscribers observing the state stream.
    final boolean
    isState(S state)
    Check if the given state is the same as the current one.
    final S
    Returns the current state.
    final rx.Observable<S>
    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.