# `DocuSign.ConnectionPool`
[🔗](https://github.com/neilberkman/docusign_elixir/blob/v3.4.0/lib/docusign/connection_pool.ex#L1)

Connection pooling configuration for high-throughput DocuSign applications.

This module optimizes HTTP connection management by reusing connections
and managing pool sizes for better performance under load.

## Configuration

Configure connection pools in your application config:

    config :docusign, :pool_options, [
      size: 10,                # Connections per pool (default: 10)
      count: 1,                # Number of pools (default: 1)
      max_idle_time: 300_000,  # Max idle time in ms (default: 5 minutes)
      timeout: 30_000          # Connection timeout (default: 30s)
    ]

## Pool Strategy

Connections are pooled per endpoint:
- Production: pools for `na3.docusign.net`, `na4.docusign.net`, etc.
- Sandbox: pools for `demo.docusign.net`

## Performance Tuning

- **size**: Number of connections kept open to each endpoint
- **count**: Number of parallel pools for concurrent request handling
- **max_idle_time**: How long idle connections stay open
- **timeout**: Maximum time to establish a connection

## Examples

    # High-throughput configuration
    config :docusign, :pool_options, [
      size: 50,                # More connections
      count: 2,                # Multiple pools for concurrency
      max_idle_time: 600_000   # Keep connections alive longer
    ]

    # Conservative configuration
    config :docusign, :pool_options, [
      size: 5,
      count: 1,
      max_idle_time: 60_000    # Close idle connections quickly
    ]

# `config`

```elixir
@spec config() :: map()
```

Get current pool configuration.

Returns the active pool configuration for inspection.

# `enabled?`

```elixir
@spec enabled?() :: boolean()
```

Check if connection pooling is enabled.

Returns true if custom pool options are configured.

# `health`

```elixir
@spec health() :: {:ok, map()} | {:error, :not_available}
```

Get pool health metrics.

Returns connection pool statistics for monitoring.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
