Last value aggregation. Keeps the most recent measurement.
ETS entry format:
{key, value, timestamp, start_time, reservoir_state}.
Uses ets:insert_new + ets:update_element (overwrite) —
last writer wins, which is the correct semantic for gauges.
The fifth slot holds the exemplar reservoir state
(Otel.Metrics.Exemplar.Reservoir.SimpleFixedSize) so a single
ETS row carries everything collect/3 needs.
Gauge data points have no aggregation temporality.
Summary
Functions
@spec aggregate( metrics_tab :: :ets.table(), key :: term(), value :: number(), opts :: map() ) :: :ok
@spec collect( metrics_tab :: :ets.table(), stream_key :: String.t(), opts :: map() ) :: [Otel.Metrics.Aggregation.datapoint()]
@spec offer_exemplar( metrics_tab :: :ets.table(), key :: term(), value :: number(), time :: non_neg_integer(), filtered_attrs :: %{required(String.t()) => term()}, ctx :: Otel.Ctx.t() ) :: :ok