Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions glean-core/src/traits/memory_distribution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,31 @@ pub trait MemoryDistribution: TestGetValue<Output = DistributionData> {
/// and an `ErrorType::InvalidValue` error is recorded.
fn accumulate(&self, sample: u64);

/// Accumulates the provided signed samples in the metric.
///
/// This is required so that the platform-specific code can provide us with
/// 64 bit signed integers if no `u64` comparable type is available. This
/// will take care of filtering and reporting errors for any provided negative
/// sample.
///
/// Please note that this assumes that the provided samples are already in
/// the "unit" declared by the instance of the metric type (e.g. if the the
/// instance this method was called on is using [`crate::MemoryUnit::Kilobyte`], then
/// `samples` are assumed to be in that unit).
///
/// # Arguments
///
/// * `samples` - The vector holding the samples to be recorded by the metric.
///
/// ## Notes
///
/// Discards any negative value in `samples` and report an [`ErrorType::InvalidValue`]
/// for each of them.
///
/// Values bigger than 1 Terabyte (2<sup>40</sup> bytes) are truncated
/// and an [`ErrorType::InvalidValue`] error is recorded.
fn accumulate_samples(&self, samples: Vec<i64>);

/// **Exported for test purposes.**
///
/// Gets the number of recorded errors for the given error type.
Expand Down