Selection strategy contract for routing provider candidates.
Summary
Types
@type candidate() :: %{ id: term(), provider: atom(), provider_opts: keyword(), priority: integer(), weight: pos_integer(), position: non_neg_integer() }
Router candidate metadata presented to strategies.
@type state() :: term()
Opaque strategy state.
Callbacks
@callback init(keyword()) :: {:ok, state()} | {:error, ASM.Error.t()}