Packages

A simple queue with Mnesia persistence and TTF

Current section

Files

Jump to
enki lib inflight.ex
Raw

lib/inflight.ex

defmodule Enki.InFlight do
@moduledoc false
use GenServer
defmodule State do
@moduledoc false
defstruct ttf: 500, message: nil, id: nil
end
@spec start_link(keyword()) :: GenServer.on_start()
def start_link(opts) do
state = struct(State, opts)
GenServer.start_link(__MODULE__, state, name: state.id)
end
@impl true
def init(%State{} = state) do
{:ok, state, state.ttf}
end
@impl true
def handle_info(:timeout, state) do
Memento.transaction!(fn ->
Memento.Query.write(state.message)
end)
{:stop, :normal, state}
end
end