MishkaInstaller.QueueAssistant (Mishka installer v0.1.7)

Copy Markdown View Source

A thin FIFO queue wrapper over the Erlang :queue module.

It is used to serialise background work (event compilation, library installation) so that only one job runs at a time.

alias MishkaInstaller.QueueAssistant

{{:value, item}, queue} =
  QueueAssistant.new()
  |> QueueAssistant.insert(:job)
  |> QueueAssistant.out()

Summary

Types

t()

An Erlang queue.

Functions

Returns true if queue is empty (or nil).

Inserts item at the rear of queue and returns the new queue.

Returns a new empty queue.

Removes the item at the front of queue.

Types

t()

@type t() :: :queue.queue(any())

An Erlang queue.

Functions

empty?(queue)

@spec empty?(t() | nil) :: boolean()

Returns true if queue is empty (or nil).

insert(queue, item)

@spec insert(t(), any()) :: t()

Inserts item at the rear of queue and returns the new queue.

new()

@spec new() :: t()

Returns a new empty queue.

out(queue)

@spec out(t()) :: {{:value, any()}, t()} | {:empty, t()}

Removes the item at the front of queue.

Returns {{:value, item}, queue} or {:empty, queue} when the queue is empty.