Jido.Messaging.ConfigStore (Jido Messaging v1.0.0)

Copy Markdown View Source

Runtime-editable bridge and routing control plane.

This is a single-writer GenServer that persists control-plane state through the configured Jido.Messaging.Persistence backend.

Summary

Functions

Returns a specification to start this module under a supervisor.

Delete stored ingress subscription metadata for a bridge.

Fetch a bridge config by id.

List bridge configs, optionally filtered by enabled: true | false.

List stored ingress subscription metadata for a bridge.

Returns the process name for an instance module.

Create or update a bridge config with optimistic revision checks.

Create or update room routing policy with optimistic revision checks.

Persist normalized ingress subscription metadata.

Types

revision_conflict()

@type revision_conflict() ::
  {:revision_conflict, expected_revision :: non_neg_integer(),
   actual_revision :: non_neg_integer() | nil}

state()

@type state() :: %{instance_module: module()}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

delete_bridge_config(instance_module, bridge_id)

@spec delete_bridge_config(module() | pid(), String.t()) :: :ok | {:error, :not_found}

Delete a bridge config.

delete_ingress_subscription(instance_module, bridge_id, subscription_id)

@spec delete_ingress_subscription(module() | pid(), String.t(), String.t()) ::
  :ok | {:error, :not_found}

Delete stored ingress subscription metadata for a bridge.

delete_routing_policy(instance_module, room_id)

@spec delete_routing_policy(module() | pid(), String.t()) ::
  :ok | {:error, :not_found}

Delete room routing policy.

get_bridge_config(instance_module, bridge_id)

@spec get_bridge_config(module() | pid(), String.t()) ::
  {:ok, Jido.Messaging.BridgeConfig.t()} | {:error, :not_found}

Fetch a bridge config by id.

get_routing_policy(instance_module, room_id)

@spec get_routing_policy(module() | pid(), String.t()) ::
  {:ok, Jido.Messaging.RoutingPolicy.t()} | {:error, :not_found}

Fetch room routing policy.

list_bridge_configs(instance_or_pid, opts \\ [])

@spec list_bridge_configs(
  module() | pid(),
  keyword()
) :: [Jido.Messaging.BridgeConfig.t()]

List bridge configs, optionally filtered by enabled: true | false.

list_ingress_subscriptions(instance_or_pid, bridge_id, opts \\ [])

@spec list_ingress_subscriptions(module() | pid(), String.t(), keyword()) ::
  {:ok, [Jido.Messaging.IngressSubscription.t()]} | {:error, term()}

List stored ingress subscription metadata for a bridge.

name(instance_module)

@spec name(module()) :: atom()

Returns the process name for an instance module.

put_bridge_config(instance_module, attrs)

@spec put_bridge_config(module() | pid(), Jido.Messaging.BridgeConfig.t() | map()) ::
  {:ok, Jido.Messaging.BridgeConfig.t()}
  | {:error, revision_conflict() | term()}

Create or update a bridge config with optimistic revision checks.

put_routing_policy(instance_module, room_id, attrs)

@spec put_routing_policy(
  module() | pid(),
  String.t(),
  Jido.Messaging.RoutingPolicy.t() | map()
) ::
  {:ok, Jido.Messaging.RoutingPolicy.t()}
  | {:error, revision_conflict() | term()}

Create or update room routing policy with optimistic revision checks.

save_ingress_subscription(instance_module, subscription)

@spec save_ingress_subscription(
  module() | pid(),
  Jido.Messaging.IngressSubscription.t()
) ::
  {:ok, Jido.Messaging.IngressSubscription.t()} | {:error, term()}

Persist normalized ingress subscription metadata.