StateMachine

Thread-safe implementation of StateMachine with event-driven state transitions.

This implementation provides:

  • Thread-safe lifecycle management

  • Event-driven state transitions with guards and side effects

  • Observer pattern for state change notifications

  • Zero external dependencies (coroutine-friendly but not dependent)

Parameters

S

The type of states in the state machine

E

The type of events that can trigger transitions

Properties

Link copied to clipboard
open override val currentState: S

The current state of the state machine.

Link copied to clipboard
open override val isRunning: Boolean

True if the state machine is currently running (started and not stopped).

Link copied to clipboard
open override val isStarted: Boolean

True if the state machine has been started at least once.

Link copied to clipboard
open override val observerCount: Int

Returns the number of registered observers.

Functions

Link copied to clipboard
open override fun addObserver(observer: StateObserver<S>): Boolean

Adds an observer to receive state change notifications.

Link copied to clipboard
open override fun clearObservers()

Removes all observers.

Link copied to clipboard
open override fun removeObserver(observer: StateObserver<S>): Boolean

Removes an observer from receiving state change notifications.

Link copied to clipboard
open override fun send(event: E): Boolean

Sends an event to the state machine for processing.

Link copied to clipboard
open override fun start()

Starts the state machine.

Link copied to clipboard
open override fun stop()

Stops the state machine.