RpcLoadBalancer.LoadBalancer.SelectionAlgorithm behaviour
(rpc_load_balancer v0.2.1)
Copy Markdown
View Source
Behaviour for load balancer node selection.
Summary
Types
Callbacks
@callback choose_from_nodes(load_balancer_name(), [node()], opts :: keyword()) :: node()
@callback choose_nodes(load_balancer_name(), [node()], pos_integer(), opts :: keyword()) :: [node()]
@callback init(load_balancer_name(), opts :: keyword()) :: :ok
@callback local?() :: boolean()
@callback on_node_change( load_balancer_name(), {:joined | :left, [node()]} ) :: :ok
@callback release_node(load_balancer_name(), node()) :: :ok
Functions
@spec choose_from_nodes(module(), load_balancer_name(), [node()], keyword()) :: node()
@spec choose_nodes(module(), load_balancer_name(), [node()], pos_integer(), keyword()) :: [node()]
@spec get_algorithm(load_balancer_name()) :: {:ok, module() | nil} | {:error, ErrorMessage.t()}
@spec init(module(), load_balancer_name(), keyword()) :: :ok
@spec on_node_change(module(), load_balancer_name(), {:joined | :left, [node()]}) :: :ok
@spec put_algorithm(load_balancer_name(), module()) :: :ok | {:error, ErrorMessage.t()}
@spec release_node(module(), load_balancer_name(), node()) :: :ok