pub struct Aimd { /* private fields */ }Expand description
Loss-based request rate limiting.
Additive-increase, multiplicative decrease for requests per second.
Increases request rate when:
- no overload errors are observed, and
- requests are successful.
Reduces request rate by a factor when overload is detected.
Implementations§
Source§impl Aimd
impl Aimd
pub fn new_with_initial_rate(initial_rps: u64) -> Self
pub fn new(initial_rps: u64, rate_range: RangeInclusive<u64>) -> Self
Sourcepub fn decrease_factor(self, factor: f64) -> Self
pub fn decrease_factor(self, factor: f64) -> Self
Set the multiplier which will be applied when decreasing the rate.
Sourcepub fn increase_by(self, increase: u64) -> Self
pub fn increase_by(self, increase: u64) -> Self
Set the increment which will be applied when increasing the rate.
pub fn with_max_rate(self, max: u64) -> Self
Trait Implementations§
Source§impl RateLimitAlgorithm for Aimd
impl RateLimitAlgorithm for Aimd
Source§fn requests_per_second(&self) -> u64
fn requests_per_second(&self) -> u64
The current requests per second limit.
Auto Trait Implementations§
impl !Freeze for Aimd
impl RefUnwindSafe for Aimd
impl Send for Aimd
impl Sync for Aimd
impl Unpin for Aimd
impl UnwindSafe for Aimd
Blanket Implementations§
Source§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
Source§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
Convert the given value into an approximately equivalent representation.
Source§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
Source§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
The error type produced by a failed conversion.
Source§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Convert the subject into an approximately equivalent representation.
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, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
Source§impl<T> ConvUtil for T
impl<T> ConvUtil for T
Source§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
Approximate the subject to a given type with the default scheme.
Source§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
Approximate the subject to a given type with a specific scheme.