Packages

Elixir GenServer and GenStage runtime metrics.

Current section

Files

Jump to
gen_metrics lib gen_server metric.ex
Raw

lib/gen_server/metric.ex

defmodule GenMetrics.GenServer.Metric do
@moduledoc false
alias GenMetrics.GenServer.Metric
alias GenMetrics.Utils.Runtime
@nano_to_micro 1000
defstruct start: 0, duration: 0
def partial(ts) do
ts
end
def pair(summary_paired, mkey, ts, partial) do
start_mkey = {1, ts - partial}
Map.update(summary_paired, mkey, start_mkey,
fn {calls, toc} -> {calls + 1, toc + (ts - partial)} end)
end
def no_pair do
{0, 0}
end
def start(ts) do
%Metric{start: ts}
end
def stop(partial, ts) do
%Metric{partial |
duration: Runtime.safe_div(ts - partial.start, @nano_to_micro)}
end
end