ExRingRing. Application. Services. HashRingService
(ex_ring_ring v0.1.0)
Copy Markdown
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.
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( [atom() | binary() | integer()], 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.
@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(), atom() | binary() | integer()) :: ExRingRing.Domain.Entities.Ring.t()
Removes a single node from the ring.
@spec remove_nodes(ExRingRing.Domain.Entities.Ring.t(), [ atom() | binary() | integer() ]) :: ExRingRing.Domain.Entities.Ring.t()
Removes nodes from the ring.