Packages
poolex
0.6.0
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.0
1.5.0-rc.0
1.4.2
1.4.1
1.4.0
1.3.0
1.2.1
1.2.0
1.1.0
1.0.0
1.0.0-rc.0
0.10.0
0.9.0
0.9.0-rc.2
0.9.0-rc.1
0.9.0-rc.0
0.8.0
0.8.0-rc.1
0.8.0-rc.0
0.7.6
0.7.5
0.7.4
retired
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.1
retired
0.3.0
retired
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
The library for managing pools of workers.
Current section
Files
Jump to
Current section
Files
lib/poolex/idle_workers.ex
defmodule Poolex.IdleWorkers do
@moduledoc false
alias Poolex.Settings
alias Poolex.Workers.Behaviour
@doc false
@spec init(Poolex.pool_id(), module()) :: Behaviour.state()
def init(pool_id, impl) do
:ok = Settings.set_implementation(pool_id, :idle_workers, impl)
impl(pool_id).init()
end
@doc false
@spec init(Poolex.pool_id(), module(), list(Behaviour.worker())) :: Behaviour.state()
def init(pool_id, impl, workers) do
:ok = Settings.set_implementation(pool_id, :idle_workers, impl)
impl(pool_id).init(workers)
end
@doc false
@spec add(Poolex.pool_id(), Behaviour.state(), Behaviour.worker()) :: Behaviour.state()
def add(pool_id, state, worker), do: impl(pool_id).add(state, worker)
@doc false
@spec remove(Poolex.pool_id(), Behaviour.state(), Behaviour.worker()) :: Behaviour.state()
def remove(pool_id, state, worker), do: impl(pool_id).remove(state, worker)
@doc false
@spec count(Poolex.pool_id(), Behaviour.state()) :: non_neg_integer()
def count(pool_id, state), do: impl(pool_id).count(state)
@doc false
@spec to_list(Poolex.pool_id(), Behaviour.state()) :: list(Behaviour.worker())
def to_list(pool_id, state), do: impl(pool_id).to_list(state)
@doc false
@spec empty?(Poolex.pool_id(), Behaviour.state()) :: boolean()
def empty?(pool_id, state), do: impl(pool_id).empty?(state)
@doc false
@spec pop(Poolex.pool_id(), Behaviour.state()) ::
{Behaviour.worker(), Behaviour.state()} | :empty
def pop(pool_id, state), do: impl(pool_id).pop(state)
@doc false
@spec impl(Poolex.pool_id()) :: module()
def impl(pool_id), do: Settings.get_implementation(pool_id, :idle_workers)
end