Coordinates controller graph validation, lifecycle management, and subscriptions.
Summary
Types
@type controller_name() :: Solve.ControllerSpec.name()
@type controller_status() :: :started | :stopped
@type controller_target() :: controller_name() | {controller_name(), Solve.Collection.id()}
@type graph() :: [Solve.ControllerSpec.t()]
@type runtime_state() :: map()
Callbacks
@callback controllers() :: graph()
Functions
@spec controller_events(GenServer.server(), controller_target()) :: [atom()] | nil
@spec controller_pid(GenServer.server(), controller_target()) :: pid() | nil
@spec controller_variant(GenServer.server(), controller_name()) :: Solve.ControllerSpec.variant() | nil
@spec dispatch(controller_target(), atom()) :: :ok
@spec dispatch(controller_target(), atom(), term()) :: :ok
@spec dispatch(GenServer.server(), controller_target(), term(), term()) :: :ok
@spec subscribe(GenServer.server(), controller_target(), pid()) :: term()