Current section

Files

Jump to
chrobot src chrobot@protocol@performance.erl
Raw

src/chrobot@protocol@performance.erl

-module(chrobot@protocol@performance).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([encode__metric/1, decode__metric/1, decode__get_metrics_response/1, disable/1, encode__enable_time_domain/1, enable/2, decode__enable_time_domain/1, get_metrics/1]).
-export_type([metric/0, get_metrics_response/0, enable_time_domain/0]).
-type metric() :: {metric, binary(), float()}.
-type get_metrics_response() :: {get_metrics_response, list(metric())}.
-type enable_time_domain() :: enable_time_domain_time_ticks |
enable_time_domain_thread_ticks.
-spec encode__metric(metric()) -> gleam@json:json().
encode__metric(Value__) ->
gleam@json:object(
[{<<"name"/utf8>>, gleam@json:string(erlang:element(2, Value__))},
{<<"value"/utf8>>, gleam@json:float(erlang:element(3, Value__))}]
).
-spec decode__metric(gleam@dynamic:dynamic_()) -> {ok, metric()} |
{error, list(gleam@dynamic:decode_error())}.
decode__metric(Value__) ->
gleam@result:'try'(
(gleam@dynamic:field(<<"name"/utf8>>, fun gleam@dynamic:string/1))(
Value__
),
fun(Name) ->
gleam@result:'try'(
(gleam@dynamic:field(
<<"value"/utf8>>,
fun gleam@dynamic:float/1
))(Value__),
fun(Value) -> {ok, {metric, Name, Value}} end
)
end
).
-spec decode__get_metrics_response(gleam@dynamic:dynamic_()) -> {ok,
get_metrics_response()} |
{error, list(gleam@dynamic:decode_error())}.
decode__get_metrics_response(Value__) ->
gleam@result:'try'(
(gleam@dynamic:field(
<<"metrics"/utf8>>,
gleam@dynamic:list(fun decode__metric/1)
))(Value__),
fun(Metrics) -> {ok, {get_metrics_response, Metrics}} end
).
-spec disable(fun((binary(), gleam@option:option(any())) -> AMVF)) -> AMVF.
disable(Callback__) ->
Callback__(<<"Performance.disable"/utf8>>, none).
-spec encode__enable_time_domain(enable_time_domain()) -> gleam@json:json().
encode__enable_time_domain(Value__) ->
_pipe = case Value__ of
enable_time_domain_time_ticks ->
<<"timeTicks"/utf8>>;
enable_time_domain_thread_ticks ->
<<"threadTicks"/utf8>>
end,
gleam@json:string(_pipe).
-spec enable(
fun((binary(), gleam@option:option(gleam@json:json())) -> AMVK),
gleam@option:option(enable_time_domain())
) -> AMVK.
enable(Callback__, Time_domain) ->
Callback__(
<<"Performance.enable"/utf8>>,
{some,
gleam@json:object(
begin
_pipe = [],
chrobot@internal@utils:add_optional(
_pipe,
Time_domain,
fun(Inner_value__) ->
{<<"timeDomain"/utf8>>,
encode__enable_time_domain(Inner_value__)}
end
)
end
)}
).
-spec decode__enable_time_domain(gleam@dynamic:dynamic_()) -> {ok,
enable_time_domain()} |
{error, list(gleam@dynamic:decode_error())}.
decode__enable_time_domain(Value__) ->
case gleam@dynamic:string(Value__) of
{ok, <<"timeTicks"/utf8>>} ->
{ok, enable_time_domain_time_ticks};
{ok, <<"threadTicks"/utf8>>} ->
{ok, enable_time_domain_thread_ticks};
{error, Error} ->
{error, Error};
{ok, Other} ->
{error,
[{decode_error,
<<"valid enum property"/utf8>>,
Other,
[<<"enum decoder"/utf8>>]}]}
end.
-spec get_metrics(
fun((binary(), gleam@option:option(any())) -> {ok, gleam@dynamic:dynamic_()} |
{error, chrobot@chrome:request_error()})
) -> {ok, get_metrics_response()} | {error, chrobot@chrome:request_error()}.
get_metrics(Callback__) ->
gleam@result:'try'(
Callback__(<<"Performance.getMetrics"/utf8>>, none),
fun(Result__) -> _pipe = decode__get_metrics_response(Result__),
gleam@result:replace_error(_pipe, protocol_error) end
).