RpcLoadBalancer.LoadBalancer.SelectionAlgorithm behaviour
(rpc_load_balancer v0.1.0)
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 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()) :: ErrorMessage.t_res(nil | module())
@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()) :: ErrorMessage.t_ok_res()
@spec release_node(module(), load_balancer_name(), node()) :: :ok