pub struct AimdController { /* private fields */ }Expand description
AIMD rate controller.
Thread-safe: uses an internal Mutex to protect state. The lock is held
only briefly during record_outcome and current_rate.
Implementations§
Source§impl AimdController
impl AimdController
Sourcepub fn new(config: AimdConfig) -> Result<Self>
pub fn new(config: AimdConfig) -> Result<Self>
Create a new AIMD controller with the given configuration.
Sourcepub fn record_outcome(&self, outcome: RequestOutcome) -> f64
pub fn record_outcome(&self, outcome: RequestOutcome) -> f64
Record a request outcome and return the current rate.
If the current time window has expired, the rate is adjusted before recording the new outcome in a fresh window.
Sourcepub fn current_rate(&self) -> f64
pub fn current_rate(&self) -> f64
Get the current rate without recording an outcome.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for AimdController
impl RefUnwindSafe for AimdController
impl Send for AimdController
impl Sync for AimdController
impl Unpin for AimdController
impl UnsafeUnpin for AimdController
impl UnwindSafe for AimdController
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> 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