pub struct AdaptiveRateLimiter { /* private fields */ }Expand description
Adaptive rate limiter that adjusts limits based on system health.
Implementations§
Source§impl AdaptiveRateLimiter
impl AdaptiveRateLimiter
Sourcepub fn new(
manager: Arc<RwLock<RateLimitManager>>,
metrics: Arc<MetricsRegistry>,
) -> Self
pub fn new( manager: Arc<RwLock<RateLimitManager>>, metrics: Arc<MetricsRegistry>, ) -> Self
Creates a new adaptive rate limiter.
Sourcepub fn adjust(&self)
pub fn adjust(&self)
Performs one adjustment cycle based on current metrics.
Logic:
- If latency > 500ms OR CPU > 80%: reduce rate by 10%
- If latency < 100ms AND CPU < 50%: increase rate by 5% (up to 1.0)
Sourcepub fn current_multiplier(&self) -> f64
pub fn current_multiplier(&self) -> f64
Returns the current adaptive multiplier.
Sourcepub fn start_background_task(self: Arc<Self>, interval: Duration)
pub fn start_background_task(self: Arc<Self>, interval: Duration)
Starts a background thread that periodically adjusts rate limits.
Auto Trait Implementations§
impl !Freeze for AdaptiveRateLimiter
impl !RefUnwindSafe for AdaptiveRateLimiter
impl Send for AdaptiveRateLimiter
impl Sync for AdaptiveRateLimiter
impl Unpin for AdaptiveRateLimiter
impl UnsafeUnpin for AdaptiveRateLimiter
impl !UnwindSafe for AdaptiveRateLimiter
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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