pub struct LoadManager { /* private fields */ }Expand description
Central load management coordinator.
Combines rate limiting, concurrency control, and load shedding into a single admission control API. Used by the HTTP server and agent loop to degrade gracefully under load.
Implementations§
Source§impl LoadManager
impl LoadManager
Sourcepub fn new(config: LoadConfig) -> Self
pub fn new(config: LoadConfig) -> Self
Create a new load manager from configuration.
Sourcepub fn check_admission(&self) -> Admission
pub fn check_admission(&self) -> Admission
Check whether a request should be admitted.
Returns Admission::Allowed if the request can proceed, or a rejection
reason if the system is under load.
Sourcepub async fn acquire_permit(&self) -> Option<OwnedSemaphorePermit>
pub async fn acquire_permit(&self) -> Option<OwnedSemaphorePermit>
Try to acquire a concurrency permit.
Returns Some(permit) if a permit was acquired, or None if the
concurrency limit is reached. The permit is automatically returned
when dropped.
Sourcepub fn record_outcome(&self, outcome: RequestOutcome)
pub fn record_outcome(&self, outcome: RequestOutcome)
Record a request outcome for error rate tracking.
Sourcepub fn set_queue_depth(&self, depth: u64)
pub fn set_queue_depth(&self, depth: u64)
Update the queue depth estimate.
Sourcepub fn metrics(&self) -> LoadMetrics
pub fn metrics(&self) -> LoadMetrics
Get current load metrics.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for LoadManager
impl !RefUnwindSafe for LoadManager
impl !UnwindSafe for LoadManager
impl Send for LoadManager
impl Sync for LoadManager
impl Unpin for LoadManager
impl UnsafeUnpin for LoadManager
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request