Current section

Files

Jump to
themis src internal@metric@gauge.erl
Raw

src/internal@metric@gauge.erl

-module(internal@metric@gauge).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/1, insert_record/3, delete_record/2, print/2]).
-export_type([gauge/0]).
-type gauge() :: any().
-file("/git/Themis/src/internal/metric/gauge.gleam", 10).
-spec new(binary()) -> internal@metric:metric(gauge(), internal@prometheus:number_()).
new(Description) ->
{metric, Description, maps:new()}.
-file("/git/Themis/src/internal/metric/gauge.gleam", 14).
-spec insert_record(
internal@metric:metric(gauge(), internal@prometheus:number_()),
internal@label:label_set(),
internal@prometheus:number_()
) -> internal@metric:metric(gauge(), internal@prometheus:number_()).
insert_record(To, Labels, Value) ->
erlang:setelement(
3,
To,
gleam@dict:insert(erlang:element(3, To), Labels, Value)
).
-file("/git/Themis/src/internal/metric/gauge.gleam", 22).
-spec delete_record(
internal@metric:metric(gauge(), internal@prometheus:number_()),
internal@label:label_set()
) -> internal@metric:metric(gauge(), internal@prometheus:number_()).
delete_record(From, Labels) ->
erlang:setelement(
3,
From,
gleam@dict:delete(erlang:element(3, From), Labels)
).
-file("/git/Themis/src/internal/metric/gauge.gleam", 29).
-spec print(
internal@metric:metric(gauge(), internal@prometheus:number_()),
internal@metric:metric_name()
) -> binary().
print(Metric, Name) ->
Name@1 = internal@metric:name_to_string(Name),
Help = <<<<<<"HELP "/utf8, Name@1/binary>>/binary, " "/utf8>>/binary,
(erlang:element(2, Metric))/binary>>,
Type_ = <<<<"TYPE "/utf8, Name@1/binary>>/binary, " gauge"/utf8>>,
_pipe = (gleam@dict:fold(
erlang:element(3, Metric),
[<<<<<<Help/binary, "\n"/utf8>>/binary, Type_/binary>>/binary,
"\n"/utf8>>],
fun(Current, Labels, Value) ->
[<<<<<<<<Name@1/binary, (internal@label:print(Labels))/binary>>/binary,
" "/utf8>>/binary,
(internal@prometheus:print(Value))/binary>>/binary,
"\n"/utf8>> |
Current]
end
)),
_pipe@1 = lists:reverse(_pipe),
_pipe@2 = gleam_stdlib:identity(_pipe@1),
unicode:characters_to_binary(_pipe@2).