Current section
Files
Jump to
Current section
Files
lib/peep/event_handler.ex
defmodule Peep.EventHandler do
@moduledoc false
@compile :inline
def attach(name) do
%Peep.Persistent{events_to_metrics: metrics_by_event} = Peep.Persistent.fetch(name)
module = Peep.Codegen.module(name)
for {event_name, _metrics} <- metrics_by_event do
handler_id = handler_id(event_name, name)
:ok =
:telemetry.attach(
handler_id,
event_name,
&module.handle_event/4,
nil
)
handler_id
end
end
def detach(handler_ids) do
for id <- handler_ids, do: :telemetry.detach(id)
:ok
end
defp handler_id(event_name, peep_name) do
{__MODULE__, peep_name, event_name}
end
end