Parrhesia.Subscriptions.Index (parrhesia v0.12.0)

Copy Markdown

ETS-backed subscription index used for fanout candidate narrowing.

Subscriptions are keyed by {owner_pid, subscription_id} and indexed by kind, author pubkey, and single-letter tag values.

Summary

Types

filter()

@type filter() :: map()

owner()

@type owner() :: pid()

subscription_id()

@type subscription_id() :: String.t()

subscription_key()

@type subscription_key() :: {owner(), subscription_id()}

Functions

candidate_subscription_keys(event)

@spec candidate_subscription_keys(map()) :: [subscription_key()]

candidate_subscription_keys(server, event)

@spec candidate_subscription_keys(GenServer.server(), map()) :: [subscription_key()]

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

fetch_filters(server \\ __MODULE__, owner_pid, subscription_id)

@spec fetch_filters(GenServer.server(), owner(), subscription_id()) ::
  {:ok, [filter()]} | :error

remove(owner_pid, subscription_id)

@spec remove(owner(), subscription_id()) :: :ok

remove(server, owner_pid, subscription_id)

@spec remove(GenServer.server(), owner(), subscription_id()) :: :ok

remove_owner(owner_pid)

@spec remove_owner(owner()) :: :ok

remove_owner(server, owner_pid)

@spec remove_owner(GenServer.server(), owner()) :: :ok

start_link(opts \\ [])

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

upsert(owner_pid, subscription_id, filters)

@spec upsert(owner(), subscription_id(), [filter()]) :: :ok | {:error, term()}

upsert(server, owner_pid, subscription_id, filters)

@spec upsert(GenServer.server(), owner(), subscription_id(), [filter()]) ::
  :ok | {:error, term()}