Packages
thousand_island
0.4.4
1.5.0
1.4.3
1.4.2
1.4.1
1.4.0
1.3.14
1.3.13
1.3.12
1.3.11
1.3.10
1.3.9
1.3.8
1.3.7
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.0
1.0.0-pre.7
1.0.0-pre.6
1.0.0-pre.5
1.0.0-pre.4
1.0.0-pre.3
1.0.0-pre.2
1.0.0-pre.1
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.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
A simple & modern pure Elixir socket server
Current section
Files
Jump to
Current section
Files
test/support/telemetry_collector.ex
defmodule ThousandIsland.TelemetryCollector do
@moduledoc false
use GenServer
def start_link(event_types) do
GenServer.start_link(__MODULE__, event_types)
end
def record_event(event, measurements, metadata, pid) do
GenServer.cast(pid, {:event, event, measurements, metadata})
end
def get_events(pid) do
GenServer.call(pid, :get_events)
end
def init(event_types) do
# Use __MODULE__ here to keep telemetry from warning about passing a local capture
# https://hexdocs.pm/telemetry/telemetry.html#attach/4
:telemetry.attach_many(
"#{inspect(self())}.trace",
event_types,
&__MODULE__.record_event/4,
self()
)
{:ok, []}
end
def handle_cast({:event, event, measurements, metadata}, events) do
{:noreply, [{event, measurements, metadata} | events]}
end
def handle_call(:get_events, _from, events) do
{:reply, Enum.reverse(events), events}
end
end