# `Poolex.Private.State`
[🔗](https://github.com/general-CbIC/poolex/blob/main/lib/poolex/private/state.ex#L1)

Internal structure containing the state of the pool.

Can be used for debugging.

# `monotonic_time`

```elixir
@type monotonic_time() :: integer()
```

A point in time expressed in milliseconds as returned by `System.monotonic_time(:millisecond)`.

Only meaningful for measuring durations against other values obtained from `System.monotonic_time/1`
— not comparable with `DateTime` or `Time`.

# `t`

```elixir
@type t() :: %Poolex.Private.State{
  busy_workers_impl: module(),
  busy_workers_state: nil | Poolex.Workers.Behaviour.state(),
  failed_to_start_workers_count: non_neg_integer(),
  failed_workers_retry_interval: timeout() | nil,
  idle_overflowed_workers_impl: module(),
  idle_overflowed_workers_last_touches: %{required(pid()) =&gt; monotonic_time()},
  idle_overflowed_workers_state: nil | Poolex.Workers.Behaviour.state(),
  idle_workers_impl: module(),
  idle_workers_state: nil | Poolex.Workers.Behaviour.state(),
  manual_monitors: %{
    required(worker_pid :: pid()) =&gt; {caller_pid :: pid(), monitor_pid :: pid()}
  },
  max_overflow: non_neg_integer(),
  max_pool_size: pos_integer() | :infinity,
  min_pool_size: non_neg_integer(),
  monitors: %{
    required(reference()) =&gt; Poolex.Private.Monitoring.kind_of_process()
  },
  overflow: non_neg_integer(),
  pool_id: Poolex.pool_id(),
  supervisor: pid(),
  waiting_callers_impl: module(),
  waiting_callers_state: nil | Poolex.Callers.Behaviour.state(),
  worker_args: [any()],
  worker_module: module(),
  worker_shutdown_delay: timeout(),
  worker_start_fun: atom()
}
```

---

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