Packages

Utility to buffer items into a queue that follow a simple block pattern on calls to push and pop when the queue at a max size or empty.

Current section

Files

Jump to
data_pool lib data_pool state.ex
Raw

lib/data_pool/state.ex

defmodule DataPool.State do
@moduledoc """
The internal state of the DataPool GenServer.
"""
alias EQueue, as: Queue
@empty_queue Queue.new
defstruct consumers: @empty_queue,
producers: @empty_queue,
data: @empty_queue,
size: 0,
max_size: 20,
status: :ok
@type status :: :ok | :done | :halt
@type t :: %__MODULE__{
consumers: Queue.t,
producers: Queue.t,
data: Queue.t,
size: pos_integer,
max_size: pos_integer,
status: status
}
end