pingora_limits::rate

Struct Rate

Source
pub struct Rate { /* private fields */ }
Expand description

A stable rate estimator that reports the rate of events in the past interval time. It returns the average rate between interval * 2 and interval while collecting the events happening between interval and now.

This estimator ignores events that happen less than once per interval time.

Implementations§

Source§

impl Rate

Source

pub fn new(interval: Duration) -> Self

Create a new Rate with the given interval.

Source

pub fn new_with_estimator_config( interval: Duration, hashes: usize, slots: usize, ) -> Self

Create a new Rate with the given interval and Estimator config with the given amount of hashes and columns (slots).

Source

pub fn rate<T: Hash>(&self, key: &T) -> f64

Return the per second rate estimation.

Source

pub fn observe<T: Hash>(&self, key: &T, events: isize) -> isize

Report new events and return number of events seen so far in the current interval.

Source

pub fn rate_with<F, T, K>(&self, key: &K, rate_calc_fn: F) -> T
where F: FnMut(RateComponents) -> T, K: Hash,

Get the current rate as calculated with the given closure. This closure will take an argument containing all the accessible information about the rate from this object and allow the caller to make their own estimation of rate based on:

  1. The accumulated samples in the current interval (in progress)
  2. The accumulated samples in the previous interval (completed)
  3. The size of the interval
  4. Elapsed fraction of current interval for this sample (0..1)

Auto Trait Implementations§

§

impl !Freeze for Rate

§

impl RefUnwindSafe for Rate

§

impl Send for Rate

§

impl Sync for Rate

§

impl Unpin for Rate

§

impl UnwindSafe for Rate

Blanket Implementations§

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.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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.