# ExRingRing v0.1.1 - Table of Contents

## Pages

- [ExRingRing](readme.md)
- [Getting Started](getting_started.md)
- [Architecture](architecture.md)
- [Configuration](configuration.md)
- [Implementation Strategies](implementation_strategies.md)

## Modules

- Core
  - [ExRingRing](ExRingRing.md): ExRingRing - Consistent Hash Ring implementation in Elixir.
  - [ExRingRing.Domain.Entities.Node](ExRingRing.Domain.Entities.Node.md): Represents a node in the consistent hash ring.
  - [ExRingRing.Domain.Entities.Ring](ExRingRing.Domain.Entities.Ring.md): Entity representing a consistent hash ring.
  - [ExRingRing.Domain.ValueObjects.HashConfig](ExRingRing.Domain.ValueObjects.HashConfig.md): Value object representing hash ring configuration.

  - [ExRingRing.Domain.ValueObjects.VirtualNode](ExRingRing.Domain.ValueObjects.VirtualNode.md): Value object representing a virtual node in the hash ring.

- Domain Services
  - [ExRingRing.Domain.Services.HashAlgorithm](ExRingRing.Domain.Services.HashAlgorithm.md): Domain service behavior for hash algorithms.
  - [ExRingRing.Domain.Services.HashRing](ExRingRing.Domain.Services.HashRing.md): Domain service behavior for hash ring operations.

- Application Layer
  - [ExRingRing.Application.Services.HashRingService](ExRingRing.Application.Services.HashRingService.md): Application service for hash ring operations.
  - [ExRingRing.Application.UseCases.AddNodes](ExRingRing.Application.UseCases.AddNodes.md): Use case for adding nodes to a hash ring.

  - [ExRingRing.Application.UseCases.CollectNodes](ExRingRing.Application.UseCases.CollectNodes.md): Use case for collecting multiple nodes for an item (for replication).

  - [ExRingRing.Application.UseCases.CreateRing](ExRingRing.Application.UseCases.CreateRing.md): Use case for creating a new hash ring.

  - [ExRingRing.Application.UseCases.FindNode](ExRingRing.Application.UseCases.FindNode.md): Use case for finding a node for an item in the hash ring.

  - [ExRingRing.Application.UseCases.RemoveNodes](ExRingRing.Application.UseCases.RemoveNodes.md): Use case for removing nodes from a hash ring.

- Ring Implementations
  - [ExRingRing.Infrastructure.HashRing.Base](ExRingRing.Infrastructure.HashRing.Base.md): Base module for hash ring implementations.
  - [ExRingRing.Infrastructure.HashRing.Dynamic](ExRingRing.Infrastructure.HashRing.Dynamic.md): Dynamic hash ring implementation using balanced tree (gb_trees).
  - [ExRingRing.Infrastructure.HashRing.Static](ExRingRing.Infrastructure.HashRing.Static.md): Static hash ring implementation using sorted array (tuple).

- Hash Algorithms
  - [ExRingRing.Infrastructure.HashAlgorithms](ExRingRing.Infrastructure.HashAlgorithms.md): Hash algorithms registry and factory.

  - [ExRingRing.Infrastructure.HashAlgorithms.CRC32](ExRingRing.Infrastructure.HashAlgorithms.CRC32.md): CRC32 hash algorithm implementation.

  - [ExRingRing.Infrastructure.HashAlgorithms.MD5](ExRingRing.Infrastructure.HashAlgorithms.MD5.md): MD5 hash algorithm implementation.

  - [ExRingRing.Infrastructure.HashAlgorithms.PHash2](ExRingRing.Infrastructure.HashAlgorithms.PHash2.md): Erlang phash2 hash algorithm implementation.

  - [ExRingRing.Infrastructure.HashAlgorithms.SHA](ExRingRing.Infrastructure.HashAlgorithms.SHA.md): SHA-1 hash algorithm implementation.

  - [ExRingRing.Infrastructure.HashAlgorithms.SHA256](ExRingRing.Infrastructure.HashAlgorithms.SHA256.md): SHA-256 hash algorithm implementation.

