Spex.InstanceManager.Server (spex v0.1.0)

Copy Markdown View Source

Core GenServer that manages instances and implementation-model observation.

This process is the stateful runtime engine behind both simple and distributed instance managers.

Responsibilities include:

  • loading implementation models on startup,
  • storing and retrieving instances via Spex.InstanceManager.InstanceStore,
  • validating observed transitions against implementation models,
  • scheduling transition timeout checks,
  • pruning stale instances.

Summary

Functions

Returns a specification to start this module under a supervisor.

Types

impl_models_map()

@type impl_models_map() :: %{optional(Spex.Specification.t()) => Spex.ImplModel.t()}

server_opt()

@type server_opt() ::
  {:impl_models_dir, String.t()}
  | {:dets_table, atom()}
  | {:dets_dir, String.t()}
  | {:check_transition_timeouts_on_start?, boolean()}
  | {:prune_interval, timeout()}

server_state()

@type server_state() :: %{
  dets_table: atom(),
  impl_models: impl_models_map(),
  prune_interval: timeout()
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.