pub struct EgressMeter { /* private fields */ }Expand description
Cumulative delivered bytes plus the last computed EWMA rate. All state
is atomic, so record stays off any lock on the hot delivery path.
Implementations§
Source§impl EgressMeter
impl EgressMeter
Sourcepub fn new() -> Self
pub fn new() -> Self
An unseeded meter. The first Self::sample seeds the EWMA rather
than reporting a rate against an unknown baseline.
Sourcepub fn record(&self, bytes: u64)
pub fn record(&self, bytes: u64)
Add bytes of delivered content to the running total. Called per chunk
with the same length billed as delivered (bao content plus proof).
Sourcepub fn sample(&self, interval_secs: u64) -> u64
pub fn sample(&self, interval_secs: u64) -> u64
Fold the bytes delivered since the last call into the EWMA and return the
new bytes/sec. interval_secs is the fixed tick period; 0 is a no-op
that returns the prior rate.
Sourcepub fn current_bps(&self) -> u64
pub fn current_bps(&self) -> u64
The most recently computed bytes/sec, read on the admission hot path.
Trait Implementations§
Source§impl Debug for EgressMeter
impl Debug for EgressMeter
Auto Trait Implementations§
impl !Freeze for EgressMeter
impl RefUnwindSafe for EgressMeter
impl Send for EgressMeter
impl Sync for EgressMeter
impl Unpin for EgressMeter
impl UnsafeUnpin for EgressMeter
impl UnwindSafe for EgressMeter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestCreates a shared type from an unshared type.