Protocol-independent deterministic Concord state machine.
This module owns all authoritative service data. It does not access ETS, clocks, processes, telemetry, storage, or a replication protocol.
Summary
Types
@type query_context() :: %{timestamp_ms: non_neg_integer()} | Concord.StateMachine.Core.Context.t()
Functions
@spec apply( Concord.StateMachine.Core.Context.t(), term(), Concord.StateMachine.Core.State.t() ) :: {term(), Concord.StateMachine.Core.State.t()}
@spec init(keyword()) :: Concord.StateMachine.Core.State.t()
@spec query(term(), Concord.StateMachine.Core.State.t(), query_context()) :: term()
@spec restore(term()) :: {:ok, Concord.StateMachine.Core.State.t()} | {:error, term()}
@spec snapshot(Concord.StateMachine.Core.State.t()) :: {:ok, map()}