ASM.Extensions.Routing.Router (ASM v0.9.2)

Copy Markdown View Source

Extension-owned routing process for provider selection and failover.

Summary

Types

Provider health information for routing decisions.

Unique provider candidate identifier used by this router instance.

Provider selection result returned by select_provider/2.

t()

Types

health_status()

Provider health information for routing decisions.

provider_id()

Unique provider candidate identifier used by this router instance.

selection()

@type selection() :: %{id: provider_id(), provider: atom(), provider_opts: keyword()}

Provider selection result returned by select_provider/2.

t()

@type t() :: %ASM.Extensions.Routing.Router{
  candidates: [candidate()],
  clock: clock_fun(),
  health_tracker: ASM.Extensions.Routing.HealthTracker.t(),
  strategy: strategy_module(),
  strategy_state: ASM.Extensions.Routing.Strategy.state()
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

health_snapshot(router)

@spec health_snapshot(pid()) ::
  {:ok, %{required(provider_id()) => health_status()}} | {:error, ASM.Error.t()}

provider_health(router, provider_id)

@spec provider_health(pid(), provider_id()) ::
  {:ok, health_status()} | {:error, ASM.Error.t()}

report_failure(router, provider_ref, reason)

@spec report_failure(pid(), selection() | provider_id(), term()) ::
  :ok | {:error, ASM.Error.t()}

report_success(router, provider_ref)

@spec report_success(pid(), selection() | provider_id()) ::
  :ok | {:error, ASM.Error.t()}

select_provider(router, opts \\ [])

@spec select_provider(
  pid(),
  keyword()
) :: {:ok, selection()} | {:error, ASM.Error.t()}

start_link(opts)

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