Packages

ETS storage backend for Pixie, Elixir's Bayeux server.

Current section

Files

Jump to
pixie_ets lib ets queue.ex
Raw

lib/ets/queue.ex

defmodule Pixie.ETS.Queue do
alias Pixie.ETS.Storage
@moduledoc """
This module implements the temporary storage queue for clients
who are between active connections.
"""
def queue(client_id, messages) when is_list(messages) do
messages
|> Enum.each(&queue(client_id, &1))
end
def queue(client_id, message) do
queue = [ message | get_queue(client_id) ]
Storage.set({:queue, client_id}, queue)
end
def dequeue(client_id) do
queue =
client_id
|> get_queue
|> Enum.reverse
Storage.delete({:queue, client_id})
queue
end
defp get_queue(client_id) do
Storage.get({:queue, client_id}) || []
end
end