Current section
Files
Jump to
Current section
Files
src/pig@obs@listener.erl
-module(pig@obs@listener).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/pig/obs/listener.gleam").
-export([attach/0, attach_to/1, get_events/1, get_event_names/1, event_count/1, detach/1]).
-export_type([listener_handle/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Test listener for capturing telemetry events.\n"
"\n"
" Attaches to `:telemetry` events and accumulates them into an ETS table.\n"
" Returns typed `List(Event)` for assertion in tests.\n"
" Designed for use in tests — no sleeping or polling needed.\n"
).
-type listener_handle() :: any().
-file("src/pig/obs/listener.gleam", 29).
?DOC(" Attach a listener that captures all pig telemetry events.\n").
-spec attach() -> listener_handle().
attach() ->
pig_obs_ffi:attach_listener(pig@obs@events:all_event_names()).
-file("src/pig/obs/listener.gleam", 34).
?DOC(" Attach a listener for specific event names only.\n").
-spec attach_to(list(list(binary()))) -> listener_handle().
attach_to(Names) ->
pig_obs_ffi:attach_listener(Names).
-file("src/pig/obs/listener.gleam", 39).
?DOC(" Get all captured events as typed `Event` values, in emission order.\n").
-spec get_events(listener_handle()) -> list(pig@obs@events:event()).
get_events(Handle) ->
_pipe = pig_obs_ffi:get_captured_events(Handle),
gleam@list:map(_pipe, fun pig@obs@events:decode/1).
-file("src/pig/obs/listener.gleam", 45).
?DOC(" Get all captured event names as raw strings, in emission order.\n").
-spec get_event_names(listener_handle()) -> list(list(binary())).
get_event_names(Handle) ->
pig_obs_ffi:get_captured_names(Handle).
-file("src/pig/obs/listener.gleam", 50).
?DOC(" Get the number of captured events.\n").
-spec event_count(listener_handle()) -> integer().
event_count(Handle) ->
pig_obs_ffi:get_captured_count(Handle).
-file("src/pig/obs/listener.gleam", 55).
?DOC(" Detach the listener and clean up resources.\n").
-spec detach(listener_handle()) -> nil.
detach(Handle) ->
pig_obs_ffi:detach_listener(Handle).