Trait glean_core::traits::TimingDistribution
source · pub trait TimingDistribution {
// Required methods
fn start(&self) -> TimerId;
fn stop_and_accumulate(&self, id: TimerId);
fn cancel(&self, id: TimerId);
fn accumulate_samples(&self, samples: Vec<i64>);
fn accumulate_single_sample(&self, sample: i64);
fn accumulate_raw_samples_nanos(&self, samples: Vec<u64>);
fn accumulate_raw_duration(&self, duration: Duration);
fn test_get_value<'a, S: Into<Option<&'a str>>>(
&self,
ping_name: S
) -> Option<DistributionData>;
fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
}
Expand description
A description for the TimingDistributionMetric
type.
When changing this trait, make sure all the operations are
implemented in the related type in ../metrics/
.
Required Methods§
sourcefn stop_and_accumulate(&self, id: TimerId)
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 start
was
called.
Arguments
id
- TheTimerId
to associate with this timing. This allows for concurrent timing of events associated with different ids to the same timespan metric.
sourcefn accumulate_samples(&self, samples: Vec<i64>)
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 crate::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
.
sourcefn accumulate_single_sample(&self, sample: i64)
fn accumulate_single_sample(&self, sample: i64)
Accumulates precisely one signed sample in 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
.
sourcefn accumulate_raw_samples_nanos(&self, samples: Vec<u64>)
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
.
sourcefn accumulate_raw_duration(&self, duration: Duration)
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.
sourcefn test_get_value<'a, S: Into<Option<&'a str>>>(
&self,
ping_name: S
) -> Option<DistributionData>
fn test_get_value<'a, S: Into<Option<&'a str>>>( &self, ping_name: S ) -> Option<DistributionData>
Exported for test purposes.
Gets the currently stored value of the metric.
This doesn’t clear the stored value.
Arguments
ping_name
- represents the optional name of the ping to retrieve the metric for. Defaults to the first value insend_in_pings
.