# grpc_connection_pool v0.4.0 - Table of Contents

A flexible and robust gRPC connection pooling library for Elixir.
Features environment-agnostic configuration, connection warming, health monitoring,
and automatic retry logic with exponential backoff and jitter.

## Pages

- [Overview](readme.md)
- [Changelog](changelog.md)
- [License](license.md)

## Modules

- Core
  - [GrpcConnectionPool](GrpcConnectionPool.md): A flexible and robust gRPC connection pooling library for Elixir.
  - [GrpcConnectionPool.Pool](GrpcConnectionPool.Pool.md): High-performance gRPC connection pool with pluggable selection strategies.

- Configuration
  - [GrpcConnectionPool.Config](GrpcConnectionPool.Config.md): Configuration module for gRPC connection pooling.

- Strategies
  - [GrpcConnectionPool.Strategy](GrpcConnectionPool.Strategy.md): Behaviour for connection selection strategies.
  - [GrpcConnectionPool.Strategy.PowerOfTwo](GrpcConnectionPool.Strategy.PowerOfTwo.md): Power-of-two-choices with a least-frequently-used tiebreak.
  - [GrpcConnectionPool.Strategy.Random](GrpcConnectionPool.Strategy.Random.md): Random channel selection.
  - [GrpcConnectionPool.Strategy.RoundRobin](GrpcConnectionPool.Strategy.RoundRobin.md): Lock-free round-robin channel selection using `:atomics`.

- Internal
  - [GrpcConnectionPool.Backoff](GrpcConnectionPool.Backoff.md): Exponential backoff with jitter for connection retry logic.
  - [GrpcConnectionPool.PoolState](GrpcConnectionPool.PoolState.md): ETS table owner and serializer for slot assignment.
  - [GrpcConnectionPool.Worker](GrpcConnectionPool.Worker.md): GenServer-based gRPC connection worker with automatic reconnection.

