Current section
Files
Jump to
Current section
Files
src/themis@histogram.erl
-module(themis@histogram).-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).-export([register/3, create_record/4, measure/4, unregister/2]).-file("/git/Themis/src/themis/histogram.gleam", 13).-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@histogram:new(Name_string, Description), gleam@result:try_recover( _pipe, fun(E) -> {error, {metric_error, E}} end ) end, fun(_use0) -> {Name, Histogram} = _use0, erlang:setelement( 4, Store, gleam@dict:insert(erlang:element(4, Store), Name, Histogram) ) end ).-file("/git/Themis/src/themis/histogram.gleam", 25).-spec create_record( themis:store(), binary(), gleam@dict:dict(binary(), binary()), gleam@set:set(internal@prometheus:number_())) -> {ok, themis:store()} | {error, themis:store_error()}.create_record(Store, Name_string, Labels_dict, Thresholds) -> 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@histogram: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(4, Store), Name ), gleam@result:replace_error( _pipe@2, metric_name_not_found ) end, fun(Histogram) -> gleam@result:'try'( begin _pipe@3 = internal@metric@histogram:create_record( Histogram, Labels, Thresholds ), gleam@result:try_recover( _pipe@3, fun(E@2) -> {error, {histogram_error, E@2}} end ) end, fun(Updated_histogram) -> {ok, erlang:setelement( 4, Store, gleam@dict:insert( erlang:element(4, Store), Name, Updated_histogram ) )} end ) end ) end ) end ).-file("/git/Themis/src/themis/histogram.gleam", 54).-spec measure( themis:store(), binary(), gleam@dict:dict(binary(), binary()), internal@prometheus:number_()) -> {ok, themis:store()} | {error, themis:store_error()}.measure(Store, Name_string, Labels_dict, Value) -> 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@histogram: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(4, Store), Name ), gleam@result:replace_error( _pipe@2, metric_name_not_found ) end, fun(Histogram) -> gleam@result:'try'( begin _pipe@3 = internal@metric@histogram:measure( Histogram, Labels, Value ), gleam@result:try_recover( _pipe@3, fun(E@2) -> {error, {histogram_error, E@2}} end ) end, fun(Updated_histogram) -> {ok, erlang:setelement( 4, Store, gleam@dict:insert( erlang:element(4, Store), Name, Updated_histogram ) )} end ) end ) end ) end ).-file("/git/Themis/src/themis/histogram.gleam", 83).-spec unregister(themis:store(), binary()) -> {ok, themis:store()} | {error, themis:store_error()}.unregister(Store, Name_string) -> gleam@result:'try'( begin _pipe = internal@metric@histogram: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(4, Store), Name), {error, metric_name_not_found}, fun() -> New_histograms = gleam@dict:delete( erlang:element(4, Store), Name ), {ok, erlang:setelement(4, Store, New_histograms)} end ) end ).