Current section
Files
Jump to
Current section
Files
lib/horde/distribution_strategy.ex
defmodule HordeClassic.DistributionStrategy do
@type t :: module()
@moduledoc """
Define your own distribution strategy by implementing this behaviour and configuring Horde to use it.
A few distribution strategies are included in Horde, namely:
- `HordeClassic.UniformDistribution`
- `HordeClassic.UniformQuorumDistribution`
- `HordeClassic.UniformRandomDistribution`
"""
@type member :: HordeClassic.DynamicSupervisor.Member.t()
@callback choose_node(
spec :: Supervisor.child_spec(),
members :: [member()]
) ::
{:ok, member()} | {:error, reason :: String.t()}
@callback has_quorum?(members :: [member()]) :: boolean()
end