Jido.Messaging.SessionManager.Partition (Jido Messaging v1.0.0)

Copy Markdown View Source

Partition process for session route state.

Each partition owns an ETS table with TTL and capacity pruning so session lookups can resolve exact routes, room-scoped fallbacks, or supplied fallback routes without centralizing all traffic in one process.

Summary

Functions

Returns a specification to start this module under a supervisor.

Fetches a stored route record for a session key.

Removes expired entries from a partition immediately.

Resolves a session route from exact, room-scoped, or provided fallback routes.

Stores a route for a session key in the selected partition.

Starts a session manager partition process.

Returns the registered process for a partition, if it is running.

Types

state()

@type state() :: %{
  instance_module: module(),
  partition: non_neg_integer(),
  table: :ets.tid(),
  ttl_ms: pos_integer(),
  max_entries_per_partition: pos_integer(),
  prune_interval_ms: pos_integer(),
  order: :queue.queue(),
  next_seq: non_neg_integer()
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

get(instance_module, partition, session_key, timeout \\ 5000)

@spec get(
  module(),
  non_neg_integer(),
  Jido.Messaging.SessionManager.session_key(),
  timeout()
) ::
  {:ok, Jido.Messaging.SessionManager.route_record()}
  | {:error, :not_found | :expired | :partition_unavailable}

Fetches a stored route record for a session key.

prune(instance_module, partition, timeout \\ 5000)

@spec prune(module(), non_neg_integer(), timeout()) ::
  {:ok, %{pruned: non_neg_integer()}} | {:error, :partition_unavailable}

Removes expired entries from a partition immediately.

resolve(instance_module, partition, session_key, fallback_routes, timeout \\ 5000)

@spec resolve(
  module(),
  non_neg_integer(),
  Jido.Messaging.SessionManager.session_key(),
  [Jido.Messaging.SessionManager.route()],
  timeout()
) ::
  {:ok, Jido.Messaging.SessionManager.resolution()}
  | {:error, :no_route | :partition_unavailable}

Resolves a session route from exact, room-scoped, or provided fallback routes.

set(instance_module, partition, session_key, route, opts \\ [], timeout \\ 5000)

@spec set(
  module(),
  non_neg_integer(),
  Jido.Messaging.SessionManager.session_key(),
  Jido.Messaging.SessionManager.route(),
  keyword(),
  timeout()
) :: :ok | {:error, :partition_unavailable}

Stores a route for a session key in the selected partition.

start_link(opts)

@spec start_link(keyword()) :: GenServer.on_start()

Starts a session manager partition process.

whereis(instance_module, partition)

@spec whereis(module(), non_neg_integer()) :: pid() | nil

Returns the registered process for a partition, if it is running.