Class AbstractStateMachine<S extends Enum>

java.lang.Object
com.couchbase.client.dcp.core.state.AbstractStateMachine<S>
All Implemented Interfaces:
Stateful<S>
Direct Known Subclasses:
DcpChannel

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.

  • Constructor Details

    • AbstractStateMachine

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

    • 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.
    • 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.