Current section

Files

Jump to
themis src themis@counter.erl
Raw

src/themis@counter.erl

-module(themis@counter).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([register/3, create_record/3, increment_record/3, increment_record_by/4, unregister/2]).
-file("/git/Themis/src/themis/counter.gleam", 29).
-spec register(themis:store(), binary(), binary()) -> {ok, themis:store()} |
{error, themis:store_error()}.
register(Store, Name_string, Description) ->
gleam@result:map(
begin
_pipe = internal@metric@counter:new(Name_string, Description),
gleam@result:try_recover(
_pipe,
fun(E) -> {error, {metric_error, E}} end
)
end,
fun(_use0) ->
{Name, Counter} = _use0,
erlang:setelement(
3,
Store,
gleam@dict:insert(erlang:element(3, Store), Name, Counter)
)
end
).
-file("/git/Themis/src/themis/counter.gleam", 59).
-spec create_record(
themis:store(),
binary(),
gleam@dict:dict(binary(), binary())
) -> {ok, themis:store()} | {error, themis:store_error()}.
create_record(Store, Name_string, Labels_dict) ->
gleam@result:'try'(
begin
_pipe = internal@label:from_dict(Labels_dict),
gleam@result:try_recover(
_pipe,
fun(E) -> {error, {label_error, E}} end
)
end,
fun(Labels) ->
gleam@result:'try'(
begin
_pipe@1 = internal@metric@counter:new_name(Name_string),
gleam@result:try_recover(
_pipe@1,
fun(E@1) -> {error, {metric_error, E@1}} end
)
end,
fun(Name) ->
gleam@result:'try'(
begin
_pipe@2 = gleam_stdlib:map_get(
erlang:element(3, Store),
Name
),
gleam@result:replace_error(
_pipe@2,
metric_name_not_found
)
end,
fun(Counter) ->
gleam@result:'try'(
begin
_pipe@3 = internal@metric@counter:create_record(
Counter,
Labels
),
gleam@result:try_recover(
_pipe@3,
fun(E@2) ->
{error, {counter_error, E@2}}
end
)
end,
fun(Updated_counter) ->
{ok,
erlang:setelement(
3,
Store,
gleam@dict:insert(
erlang:element(3, Store),
Name,
Updated_counter
)
)}
end
)
end
)
end
)
end
).
-file("/git/Themis/src/themis/counter.gleam", 102).
-spec increment_record(
themis:store(),
binary(),
gleam@dict:dict(binary(), binary())
) -> {ok, themis:store()} | {error, themis:store_error()}.
increment_record(Store, Name_string, Labels_dict) ->
gleam@result:'try'(
begin
_pipe = internal@label:from_dict(Labels_dict),
gleam@result:try_recover(
_pipe,
fun(E) -> {error, {label_error, E}} end
)
end,
fun(Labels) ->
gleam@result:'try'(
begin
_pipe@1 = internal@metric@counter:new_name(Name_string),
gleam@result:try_recover(
_pipe@1,
fun(E@1) -> {error, {metric_error, E@1}} end
)
end,
fun(Name) ->
gleam@result:'try'(
begin
_pipe@2 = gleam_stdlib:map_get(
erlang:element(3, Store),
Name
),
gleam@result:replace_error(
_pipe@2,
metric_name_not_found
)
end,
fun(Counter) ->
gleam@result:'try'(
begin
_pipe@3 = internal@metric@counter:increment(
Counter,
Labels
),
gleam@result:try_recover(
_pipe@3,
fun(E@2) ->
{error, {counter_error, E@2}}
end
)
end,
fun(Updated_counter) ->
{ok,
erlang:setelement(
3,
Store,
gleam@dict:insert(
erlang:element(3, Store),
Name,
Updated_counter
)
)}
end
)
end
)
end
)
end
).
-file("/git/Themis/src/themis/counter.gleam", 146).
-spec increment_record_by(
themis:store(),
binary(),
gleam@dict:dict(binary(), binary()),
internal@prometheus:number_()
) -> {ok, themis:store()} | {error, themis:store_error()}.
increment_record_by(Store, Name_string, Labels_dict, By) ->
gleam@result:'try'(
begin
_pipe = internal@label:from_dict(Labels_dict),
gleam@result:try_recover(
_pipe,
fun(E) -> {error, {label_error, E}} end
)
end,
fun(Labels) ->
gleam@result:'try'(
begin
_pipe@1 = internal@metric@counter:new_name(Name_string),
gleam@result:try_recover(
_pipe@1,
fun(E@1) -> {error, {metric_error, E@1}} end
)
end,
fun(Name) ->
gleam@result:'try'(
begin
_pipe@2 = gleam_stdlib:map_get(
erlang:element(3, Store),
Name
),
gleam@result:replace_error(
_pipe@2,
metric_name_not_found
)
end,
fun(Counter) ->
gleam@result:'try'(
begin
_pipe@3 = internal@metric@counter:increment_by(
Counter,
Labels,
By
),
gleam@result:try_recover(
_pipe@3,
fun(E@2) ->
{error, {counter_error, E@2}}
end
)
end,
fun(Updated_counter) ->
{ok,
erlang:setelement(
3,
Store,
gleam@dict:insert(
erlang:element(3, Store),
Name,
Updated_counter
)
)}
end
)
end
)
end
)
end
).
-file("/git/Themis/src/themis/counter.gleam", 184).
-spec unregister(themis:store(), binary()) -> {ok, themis:store()} |
{error, themis:store_error()}.
unregister(Store, Name_string) ->
gleam@result:'try'(
begin
_pipe = internal@metric@counter:new_name(Name_string),
gleam@result:try_recover(
_pipe,
fun(E) -> {error, {metric_error, E}} end
)
end,
fun(Name) ->
gleam@bool:guard(
not gleam@dict:has_key(erlang:element(3, Store), Name),
{error, metric_name_not_found},
fun() ->
New_counters = gleam@dict:delete(
erlang:element(3, Store),
Name
),
{ok, erlang:setelement(3, Store, New_counters)}
end
)
end
).