pub struct TimingDistributionMetric { /* private fields */ }
Expand description

A timing distribution metric.

Timing distributions are used to accumulate and store time measurement, for analyzing distributions of the timing data.

Implementations§

source§

impl TimingDistributionMetric

source

pub fn new(meta: CommonMetricData, time_unit: TimeUnit) -> Self

Creates a new timing distribution metric.

source

pub fn start(&self) -> TimerId

Starts tracking time for the provided metric.

This records an error if it’s already tracking time (i.e. set_start was already called with no corresponding set_stop_and_accumulate): in that case the original start time will be preserved.

Arguments
  • start_time - Timestamp in nanoseconds.
Returns

A unique TimerId for the new timer.

source

pub fn stop_and_accumulate(&self, id: TimerId)

Stops tracking time for the provided metric and associated timer id.

Adds a count to the corresponding bucket in the timing distribution. This will record an error if no set_start was called.

Arguments
  • id - The TimerId to associate with this timing. This allows for concurrent timing of events associated with different ids to the same timespan metric.
  • stop_time - Timestamp in nanoseconds.
source

pub fn cancel(&self, id: TimerId)

Aborts a previous start call.

No error is recorded if no start was called.

Arguments
  • id - The TimerId to associate with this timing. This allows for concurrent timing of events associated with different ids to the same timing distribution metric.
source

pub fn accumulate_samples(&self, samples: Vec<i64>)

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 instance this method was called on is using TimeUnit::Second, 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. Reports an ErrorType::InvalidOverflow error for samples that are longer than MAX_SAMPLE_TIME.

source

pub fn accumulate_single_sample(&self, sample: i64)

Accumulates precisely one signed sample and appends it to the metric.

Precludes the need for a collection in the most common use case.

Sign is required so that the platform-specific code can provide us with a 64 bit signed integer 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 sample is already in the “unit” declared by the instance of the metric type (e.g. if the instance this method was called on is using crate::TimeUnit::Second, then sample is assumed to be in that unit).

Arguments
  • sample - The singular sample to be recorded by the metric.
Notes

Discards any negative value and reports an ErrorType::InvalidValue. Reports an ErrorType::InvalidOverflow error if the sample is longer than MAX_SAMPLE_TIME.

source

pub fn accumulate_raw_samples_nanos(&self, samples: Vec<u64>)

Accumulates the provided samples in the metric.

Arguments
  • samples - A list of samples recorded by the metric. Samples must be in nanoseconds.
Notes

Reports an ErrorType::InvalidOverflow error for samples that are longer than MAX_SAMPLE_TIME.

source

pub fn accumulate_raw_duration(&self, duration: Duration)

Accumulates precisely one duration to the metric.

Like TimingDistribution::accumulate_single_sample, but for use when the duration is:

  • measured externally, or
  • is in a unit different from the timing_distribution’s internal TimeUnit.
Arguments
  • duration - The single duration to be recorded in the metric.
Notes

Reports an ErrorType::InvalidOverflow error if duration is longer than MAX_SAMPLE_TIME.

The API client is responsible for ensuring that duration is derived from a monotonic clock source that behaves consistently over computer sleep across the application’s platforms. Otherwise the resulting data may not share the same guarantees that other timing_distribution metrics’ data do.

source

pub fn test_get_value( &self, ping_name: Option<String> ) -> Option<DistributionData>

Test-only API (exported for FFI purposes).

Gets the currently stored value as an integer.

This doesn’t clear the stored value.

Arguments
  • ping_name - the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
Returns

The stored value or None if nothing stored.

source

pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

Exported for test purposes.

Gets the number of recorded errors for the given metric and error type.

Arguments
  • error - The type of error
Returns

The number of errors reported.

source

pub fn start_buffer(&self) -> LocalTimingDistribution<'_>

Experimental: Start a new histogram buffer associated with this timing distribution metric.

A histogram buffer accumulates in-memory. Data is recorded into the metric on drop.

Trait Implementations§

source§

impl Clone for TimingDistributionMetric

source§

fn clone(&self) -> TimingDistributionMetric

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TimingDistributionMetric

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl MetricType for TimingDistributionMetric

source§

fn meta(&self) -> &CommonMetricDataInternal

Access the stored metadata
source§

fn with_name(&self, name: String) -> Self

Create a new metric from this with a new name.
source§

fn with_dynamic_label(&self, label: String) -> Self

Create a new metric from this with a specific label.
source§

fn should_record(&self, glean: &Glean) -> bool

Whether this metric should currently be recorded Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> AllowLabeled for T
where T: MetricType + Sealed,

source§

fn new_labeled(meta: LabeledMetricData) -> T

Create a new labeled metric.
source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

unsafe fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

unsafe fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<> Read more
§

unsafe fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.