opentelemetry_spanprocessor_any/sdk/metrics/aggregators/
mod.rs1use crate::metrics::{Descriptor, InstrumentKind, MetricsError, Number, NumberKind, Result};
3
4mod array;
5mod ddsketch;
6mod histogram;
7mod last_value;
8mod min_max_sum_count;
9mod sum;
10
11pub use array::{array, ArrayAggregator};
12pub use ddsketch::{ddsketch, DdSketchAggregator, DdSketchConfig};
13pub use histogram::{histogram, HistogramAggregator};
14pub use last_value::{last_value, LastValueAggregator};
15pub use min_max_sum_count::{min_max_sum_count, MinMaxSumCountAggregator};
16pub use sum::{sum, SumAggregator};
17
18pub fn range_test(number: &Number, descriptor: &Descriptor) -> Result<()> {
23 if descriptor.number_kind() == &NumberKind::F64 && number.is_nan() {
24 return Err(MetricsError::NaNInput);
25 }
26
27 match descriptor.instrument_kind() {
28 InstrumentKind::Counter | InstrumentKind::SumObserver
29 if descriptor.number_kind() == &NumberKind::F64 =>
30 {
31 if number.is_negative(descriptor.number_kind()) {
32 return Err(MetricsError::NegativeInput);
33 }
34 }
35 _ => (),
36 };
37 Ok(())
38}