Packages

A distributed, compacting, multidimensional, telemetry-powered time series datastore

Current section

Files

Jump to
oban_met lib oban met value.ex
Raw

lib/oban/met/value.ex

defprotocol Oban.Met.Value do
@moduledoc """
Tracked data access functions.
"""
@doc """
Add or append a new value to the data type.
"""
def add(struct, value)
@doc """
Merge two values into one.
"""
def merge(struct_1, struct_2)
@doc """
Compute the quantile for a value.
"""
def quantile(struct, quantile)
@doc """
Sum all data points for a value.
"""
def sum(struct)
@doc """
Union two values by reducing them into one.
"""
def union(struct_1, struct_2)
end
for module <- [Oban.Met.Values.Gauge, Oban.Met.Values.Sketch] do
defimpl Oban.Met.Value, for: module do
defdelegate add(struct, value), to: @for
defdelegate merge(struct_1, struct_2), to: @for
defdelegate quantile(struct, quantile), to: @for
defdelegate sum(struct), to: @for
defdelegate union(struct_1, struct_2), to: @for
end
end