ExRingRing. Domain. Services. HashRing behaviour
(ex_ring_ring v0.1.0)
Copy Markdown
Domain service behavior for hash ring operations.
This defines the contract for hash ring implementations.
Summary
Types
@type fold_fun() :: (ExRingRing.Domain.Entities.Node.t(), term() -> {boolean(), term()})
@type item() :: term()
@type node_map() :: %{required(term()) => ExRingRing.Domain.Entities.Node.t()}
Callbacks
@callback add_nodes([ExRingRing.Domain.Entities.Node.t()], term()) :: term()
@callback get_non_phantom_node_count(term()) :: non_neg_integer()
@callback hash(item(), term()) :: non_neg_integer()
@callback make( [ExRingRing.Domain.Entities.Node.t()], ExRingRing.Domain.ValueObjects.HashConfig.t() ) :: term()