Packages
mob_dev
0.2.6
0.6.23
0.6.22
0.6.21
0.6.20
0.6.19
0.6.18
0.6.17
0.6.16
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.37
0.3.35
0.3.34
0.3.33
0.3.28
0.3.26
0.3.23
0.3.21
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.18
0.2.17
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
Development tooling for the Mob mobile framework
Current section
Files
Jump to
Current section
Files
lib/mob_dev/server/elixir_log_buffer.ex
defmodule MobDev.Server.ElixirLogBuffer do
@moduledoc """
Holds the last N server-side Elixir log lines in memory so the dashboard
can restore them on reconnect. Fed by `MobDev.Server.ElixirLogger`.
"""
use GenServer
@limit 200
@spec start_link(keyword()) :: GenServer.on_start()
def start_link(opts \\ []) do
GenServer.start_link(__MODULE__, opts, name: __MODULE__)
end
@spec get() :: [map()]
def get, do: GenServer.call(__MODULE__, :get)
@spec push(map()) :: :ok
def push(line), do: GenServer.cast(__MODULE__, {:push, line})
@spec clear() :: :ok
def clear, do: GenServer.cast(__MODULE__, :clear)
@impl GenServer
def init(_), do: {:ok, []}
@impl GenServer
def handle_call(:get, _from, lines), do: {:reply, lines, lines}
@impl GenServer
def handle_cast({:push, line}, lines) do
{:noreply, Enum.take([line | lines], @limit)}
end
def handle_cast(:clear, _lines), do: {:noreply, []}
end