# `Dllb.Pool`
[🔗](https://github.com/Oeditus/dllb_ex/blob/v0.1.0/lib/dllb/pool.ex#L1)

NimblePool-based connection pool for dllb TCP connections.

Workers are raw `:gen_tcp` sockets managed through `Dllb.Connection`.
Dead sockets are detected at checkout and transparently reconnected.

# `child_spec`

```elixir
@spec child_spec(Keyword.t()) :: Supervisor.child_spec()
```

Returns a child spec for starting the pool under a supervisor.

## Options

  * `:host` - server hostname (default from app env or `"127.0.0.1"`)
  * `:port` - server port (default from app env or `3009`)
  * `:pool_size` - number of connections (default from app env or `5`)
  * `:outcome` - response format (default `:json`)
  * `:timeout` - connection/recv timeout in ms (default `30_000`)

# `query`

```elixir
@spec query(String.t(), Keyword.t()) :: {:ok, Dllb.Result.t()} | {:error, term()}
```

Executes a query through the connection pool.

Checks out a socket, runs the query via `Dllb.Connection.query/3`,
and checks the socket back in.

## Options

  * `:timeout` - recv timeout in ms (default `30_000`)

Returns `{:ok, result}` or `{:error, reason}`.

---

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