Application service for hash ring operations.
This is the main entry point for the application layer.
Summary
Functions
Adds a single node to the ring.
Adds nodes to the ring.
Collects N nodes for an item (for replication).
Creates a new hash ring.
Creates a new hash ring from keys.
Checks if ring is empty.
Finds the node responsible for an item.
Gets the node count (including phantom nodes).
Gets all nodes in the ring.
Removes a single node from the ring.
Removes nodes from the ring.
Functions
@spec add_node( ExRingRing.Domain.Entities.Ring.t(), ExRingRing.Domain.Entities.Node.t() ) :: ExRingRing.Domain.Entities.Ring.t()
Adds a single node to the ring.
@spec add_nodes(ExRingRing.Domain.Entities.Ring.t(), [ ExRingRing.Domain.Entities.Node.t() ]) :: ExRingRing.Domain.Entities.Ring.t()
Adds nodes to the ring.
@spec collect_nodes(ExRingRing.Domain.Entities.Ring.t(), term(), non_neg_integer()) :: [ ExRingRing.Domain.Entities.Node.t() ]
Collects N nodes for an item (for replication).
@spec create_ring( [ExRingRing.Domain.Entities.Node.t()], keyword() ) :: ExRingRing.Domain.Entities.Ring.t()
Creates a new hash ring.
@spec create_ring_from_keys( [term()], keyword() ) :: ExRingRing.Domain.Entities.Ring.t()
Creates a new hash ring from keys.
@spec empty?(ExRingRing.Domain.Entities.Ring.t()) :: boolean()
Checks if ring is empty.
@spec find_node(ExRingRing.Domain.Entities.Ring.t(), term()) :: {:ok, ExRingRing.Domain.Entities.Node.t()} | :error
Finds the node responsible for an item.
@spec get_node_count(ExRingRing.Domain.Entities.Ring.t()) :: non_neg_integer()
Gets the node count (including phantom nodes).
@spec get_nodes(ExRingRing.Domain.Entities.Ring.t()) :: [ ExRingRing.Domain.Entities.Node.t() ]
Gets all nodes in the ring.
@spec remove_node(ExRingRing.Domain.Entities.Ring.t(), term()) :: ExRingRing.Domain.Entities.Ring.t()
Removes a single node from the ring.
@spec remove_nodes(ExRingRing.Domain.Entities.Ring.t(), [term()]) :: ExRingRing.Domain.Entities.Ring.t()
Removes nodes from the ring.