Packages
horde
0.7.0
0.10.0
0.9.1
0.9.0
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.8.0-rc.1
0.7.1
0.7.0
0.6.1
0.6.0
0.6.0-rc.1
0.5.0
0.5.0-rc.12
0.5.0-rc.11
0.5.0-rc.10
0.5.0-rc.9
0.5.0-rc.8
0.5.0-rc.7
0.5.0-rc.6
0.5.0-rc.5
0.5.0-rc.4
0.5.0-rc.3
0.5.0-rc.2
0.5.0-rc.1
0.4.0-rc.2
0.4.0-rc.1
0.3.0
0.3.0-rc1
0.2.3
0.2.2
0.2.1
0.2.0
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Distributed supervisor & process registry built with DELTA-CRDTs
Current section
Files
Jump to
Current section
Files
lib/horde/distribution_strategy.ex
defmodule Horde.DistributionStrategy do
@type t :: module()
@moduledoc """
Define your own distribution strategy by implementing this behaviour and configuring Horde to use it.
See `Horde.UniformQuorumDistribution` and `Horde.UniformDistribution` for examples.
"""
@callback choose_node(identifier :: String.t(), members :: [Horde.DynamicSupervisor.Member.t()]) ::
{:ok, Horde.DynamicSupervisor.Member.t()} | {:error, reason :: String.t()}
@callback has_quorum?(members :: [Horde.DynamicSupervisor.Member.t()]) :: boolean()
end