Packages
poolex
1.6.3
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/callers/behaviour.ex
defmodule Poolex.Callers.Behaviour do
@moduledoc """
Behaviour for callers collection implementations.
`caller` is a process that uses the `Poolex.run/3` function and waits for the execution result.
**Note that the caller's typespec matches `GenServer.from()`**
"""
@type state() :: any()
@doc "Returns `state` (any data structure) which will be passed as the first argument to all other functions."
@callback init() :: state()
@doc "Adds caller to `state` and returns new state."
@callback add(state(), Poolex.Caller.t()) :: state()
@doc "Returns `true` if the `state` is empty, `false` otherwise."
@callback empty?(state()) :: boolean()
@doc "Removes one of callers from `state` and returns it as `{caller, state}`. Returns `:empty` if state is empty."
@callback pop(state()) :: {Poolex.Caller.t(), state()} | :empty
@doc "Removes caller by pid from `state` and returns new state."
@callback remove_by_pid(state(), caller_pid :: pid()) :: state()
@doc "Removes caller by reference from `state` and returns new state."
@callback remove_by_reference(state(), reference :: reference()) :: state()
@doc "Returns list of callers."
@callback to_list(state()) :: list(Poolex.Caller.t())
end