Packages
Typed distributed messaging for Gleam on the BEAM.
Current section
Files
Jump to
Current section
Files
src/distribute@internal@telemetry.erl
-module(distribute@internal@telemetry).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/distribute/internal/telemetry.gleam").
-export([system_time/0, emit_message_send_stop/4, emit_registry_lookup_stop/3, emit_registry_register_stop/3, emit_codec_encode_stop/3, emit_codec_decode_stop/2, emit_node_event/2]).
-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(false).
-file("src/distribute/internal/telemetry.gleam", 13).
?DOC(false).
-spec system_time() -> integer().
system_time() ->
distribute_ffi_utils:system_time_ms().
-file("src/distribute/internal/telemetry.gleam", 32).
?DOC(false).
-spec list_to_atoms(list(binary())) -> list(gleam@dynamic:dynamic_()).
list_to_atoms(List) ->
case List of
[] ->
[];
[First | Rest] ->
[distribute_ffi_utils:to_atom_safe(First) | list_to_atoms(Rest)]
end.
-file("src/distribute/internal/telemetry.gleam", 39).
?DOC(false).
-spec list_to_atom_pairs(list({binary(), gleam@dynamic:dynamic_()})) -> list({gleam@dynamic:dynamic_(),
gleam@dynamic:dynamic_()}).
list_to_atom_pairs(List) ->
case List of
[] ->
[];
[{K, V} | Rest] ->
[{distribute_ffi_utils:to_atom_safe(K), V} |
list_to_atom_pairs(Rest)]
end.
-file("src/distribute/internal/telemetry.gleam", 20).
?DOC(false).
-spec emit(
list(binary()),
list({binary(), gleam@dynamic:dynamic_()}),
list({binary(), gleam@dynamic:dynamic_()})
) -> nil.
emit(Path, Measurements, Metadata) ->
telemetry:execute(
list_to_atoms(Path),
maps:from_list(list_to_atom_pairs(Measurements)),
maps:from_list(list_to_atom_pairs(Metadata))
).
-file("src/distribute/internal/telemetry.gleam", 50).
?DOC(false).
-spec emit_message_send_stop(integer(), integer(), binary(), boolean()) -> nil.
emit_message_send_stop(Duration, Size, Target, Success) ->
emit(
[<<"distribute"/utf8>>,
<<"message"/utf8>>,
<<"send"/utf8>>,
<<"stop"/utf8>>],
[{<<"duration"/utf8>>, gleam_stdlib:identity(Duration)},
{<<"size"/utf8>>, gleam_stdlib:identity(Size)}],
[{<<"target"/utf8>>, gleam_stdlib:identity(Target)},
{<<"success"/utf8>>, gleam_stdlib:identity(Success)}]
).
-file("src/distribute/internal/telemetry.gleam", 63).
?DOC(false).
-spec emit_registry_lookup_stop(binary(), boolean(), integer()) -> nil.
emit_registry_lookup_stop(Name, Found, Duration) ->
emit(
[<<"distribute"/utf8>>,
<<"registry"/utf8>>,
<<"lookup"/utf8>>,
<<"stop"/utf8>>],
[{<<"duration"/utf8>>, gleam_stdlib:identity(Duration)}],
[{<<"name"/utf8>>, gleam_stdlib:identity(Name)},
{<<"found"/utf8>>, gleam_stdlib:identity(Found)}]
).
-file("src/distribute/internal/telemetry.gleam", 75).
?DOC(false).
-spec emit_registry_register_stop(binary(), boolean(), integer()) -> nil.
emit_registry_register_stop(Name, Success, Duration) ->
emit(
[<<"distribute"/utf8>>,
<<"registry"/utf8>>,
<<"register"/utf8>>,
<<"stop"/utf8>>],
[{<<"duration"/utf8>>, gleam_stdlib:identity(Duration)}],
[{<<"name"/utf8>>, gleam_stdlib:identity(Name)},
{<<"success"/utf8>>, gleam_stdlib:identity(Success)}]
).
-file("src/distribute/internal/telemetry.gleam", 87).
?DOC(false).
-spec emit_codec_encode_stop(integer(), integer(), boolean()) -> nil.
emit_codec_encode_stop(Duration, Size, Success) ->
emit(
[<<"distribute"/utf8>>,
<<"codec"/utf8>>,
<<"encode"/utf8>>,
<<"stop"/utf8>>],
[{<<"duration"/utf8>>, gleam_stdlib:identity(Duration)},
{<<"size"/utf8>>, gleam_stdlib:identity(Size)}],
[{<<"success"/utf8>>, gleam_stdlib:identity(Success)}]
).
-file("src/distribute/internal/telemetry.gleam", 95).
?DOC(false).
-spec emit_codec_decode_stop(integer(), boolean()) -> nil.
emit_codec_decode_stop(Duration, Success) ->
emit(
[<<"distribute"/utf8>>,
<<"codec"/utf8>>,
<<"decode"/utf8>>,
<<"stop"/utf8>>],
[{<<"duration"/utf8>>, gleam_stdlib:identity(Duration)}],
[{<<"success"/utf8>>, gleam_stdlib:identity(Success)}]
).
-file("src/distribute/internal/telemetry.gleam", 103).
?DOC(false).
-spec emit_node_event(binary(), binary()) -> nil.
emit_node_event(Node, Type_name) ->
emit(
[<<"distribute"/utf8>>, <<"cluster"/utf8>>, <<"node_event"/utf8>>],
[{<<"count"/utf8>>, gleam_stdlib:identity(1)}],
[{<<"node"/utf8>>, gleam_stdlib:identity(Node)},
{<<"type"/utf8>>, distribute_ffi_utils:to_atom_safe(Type_name)}]
).