Box.PoolProcessor.Manager.State (box v0.15.1)

View Source

Summary

Types

init_option()

@type init_option() ::
  {:supervisor_pid, pid()}
  | {:size, non_neg_integer()}
  | {:queue, queue_spec() | module()}

queue()

@type queue() :: {queue_spec(), queue_state()}

queue_spec()

@type queue_spec() :: {module(), Keyword.t()}

queue_state()

@type queue_state() :: any()

queue_state_mapper()

@type queue_state_mapper() :: (queue_spec(), queue_state() -> queue_state())

t()

@type t() :: %Box.PoolProcessor.Manager.State{
  processes: [reference()],
  queue: queue(),
  size: non_neg_integer(),
  supervisor_pid: pid(),
  watchers: %{required(reference()) => [pid()]}
}

Functions

backfill(state)

@spec backfill(t()) :: {:continue, t()} | {:done, t()}

dequeue(state)

@spec dequeue(t()) :: t()

enqueue(state, function, watchers \\ [])

@spec enqueue(t(), function(), [GenServer.from()]) :: t()

finish_process(state, ref)

@spec finish_process(t(), reference()) :: t()

init(args)

@spec init([init_option()]) :: {:load_queue, t()} | {:ok, t()}

map_queue_state(state, function)

@spec map_queue_state(t(), queue_state_mapper()) :: t()