pub struct PeerBandwidthWindow {
pub peer_id: String,
pub samples: Vec<TickBandwidthSample>,
pub window_size: usize,
pub total_sent: u64,
pub total_received: u64,
}Expand description
Sliding-window bandwidth state for a single peer, indexed by logical tick.
Fields§
§peer_id: StringStable identifier for this peer.
samples: Vec<TickBandwidthSample>Ordered samples (oldest first); bounded by window_size.
window_size: usizeMaximum number of samples to retain.
total_sent: u64Cumulative bytes sent across all samples ever recorded (not windowed).
total_received: u64Cumulative bytes received across all samples ever recorded (not windowed).
Implementations§
Source§impl PeerBandwidthWindow
impl PeerBandwidthWindow
Sourcepub fn new(peer_id: impl Into<String>, window_size: usize) -> Self
pub fn new(peer_id: impl Into<String>, window_size: usize) -> Self
Create a new, empty window for the given peer with the given capacity.
Sourcepub fn add_sample(&mut self, tick: u64, bytes_sent: u64, bytes_received: u64)
pub fn add_sample(&mut self, tick: u64, bytes_sent: u64, bytes_received: u64)
Append a new sample, evicting the oldest when over capacity.
Updates cumulative totals before any eviction.
Sourcepub fn avg_send_rate(&self) -> f64
pub fn avg_send_rate(&self) -> f64
Mean bytes_sent across all samples currently in the window.
Returns 0.0 when the window is empty.
Sourcepub fn avg_recv_rate(&self) -> f64
pub fn avg_recv_rate(&self) -> f64
Mean bytes_received across all samples currently in the window.
Returns 0.0 when the window is empty.
Trait Implementations§
Source§impl Clone for PeerBandwidthWindow
impl Clone for PeerBandwidthWindow
Source§fn clone(&self) -> PeerBandwidthWindow
fn clone(&self) -> PeerBandwidthWindow
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for PeerBandwidthWindow
impl RefUnwindSafe for PeerBandwidthWindow
impl Send for PeerBandwidthWindow
impl Sync for PeerBandwidthWindow
impl Unpin for PeerBandwidthWindow
impl UnsafeUnpin for PeerBandwidthWindow
impl UnwindSafe for PeerBandwidthWindow
Blanket Implementations§
impl<T> Allocation for T
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 more