Current section
Files
Jump to
Current section
Files
lib/asm/extensions/routing/strategy/priority.ex
defmodule ASM.Extensions.Routing.Strategy.Priority do
@moduledoc """
Stable priority strategy that always picks the lowest priority value.
"""
@behaviour ASM.Extensions.Routing.Strategy
@impl true
def init(_opts), do: {:ok, nil}
@impl true
def choose([], _state, _opts), do: :none
def choose(candidates, state, _opts) do
candidate = Enum.min_by(candidates, &{&1.priority, &1.position})
{:ok, candidate, state}
end
end