pub struct BandwidthThrottle { /* private fields */ }Expand description
Bandwidth throttler using token bucket algorithm
Implementations§
Source§impl BandwidthThrottle
impl BandwidthThrottle
Sourcepub fn new(config: ThrottleConfig) -> Result<Self, ThrottleError>
pub fn new(config: ThrottleConfig) -> Result<Self, ThrottleError>
Create a new bandwidth throttle with the given configuration
Sourcepub fn check_and_consume(
&self,
direction: TrafficDirection,
bytes: u64,
) -> Result<(), ThrottleError>
pub fn check_and_consume( &self, direction: TrafficDirection, bytes: u64, ) -> Result<(), ThrottleError>
Check if data transfer is allowed Returns Ok(()) if allowed, or Err with retry duration
Sourcepub fn available_bandwidth(&self, direction: TrafficDirection) -> Option<u64>
pub fn available_bandwidth(&self, direction: TrafficDirection) -> Option<u64>
Get available bandwidth in bytes for the given direction
Sourcepub fn set_enabled(&mut self, enabled: bool)
pub fn set_enabled(&mut self, enabled: bool)
Enable or disable throttling
Sourcepub fn is_enabled(&self) -> bool
pub fn is_enabled(&self) -> bool
Check if throttling is enabled
Sourcepub fn config(&self) -> &ThrottleConfig
pub fn config(&self) -> &ThrottleConfig
Get the current configuration
Sourcepub fn update_config(
&mut self,
config: ThrottleConfig,
) -> Result<(), ThrottleError>
pub fn update_config( &mut self, config: ThrottleConfig, ) -> Result<(), ThrottleError>
Update throttle configuration
Trait Implementations§
Source§impl Clone for BandwidthThrottle
impl Clone for BandwidthThrottle
Source§fn clone(&self) -> BandwidthThrottle
fn clone(&self) -> BandwidthThrottle
Returns a duplicate of the value. Read more
1.0.0 · 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 BandwidthThrottle
impl !RefUnwindSafe for BandwidthThrottle
impl Send for BandwidthThrottle
impl Sync for BandwidthThrottle
impl Unpin for BandwidthThrottle
impl !UnwindSafe for BandwidthThrottle
Blanket Implementations§
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
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