pub struct Scheduler { /* private fields */ }Expand description
Agent scheduler that enforces per-fighter quotas.
Thread-safe: all internal state is behind DashMap entries with inner
Mutex guards so the Scheduler can be shared via Arc.
Implementations§
Source§impl Scheduler
impl Scheduler
Sourcepub fn new(config: QuotaConfig) -> Self
pub fn new(config: QuotaConfig) -> Self
Create a new scheduler with the given quota configuration.
Sourcepub fn check_quota(&self, fighter_id: &FighterId) -> bool
pub fn check_quota(&self, fighter_id: &FighterId) -> bool
Check whether fighter_id is within its quota limits.
Returns true if the fighter may proceed, false if it has been
rate-limited.
Sourcepub fn record_usage(&self, fighter_id: &FighterId, tokens: u64)
pub fn record_usage(&self, fighter_id: &FighterId, tokens: u64)
Record token usage for a fighter.
Sourcepub fn cleanup(&self)
pub fn cleanup(&self)
Evict stale records outside the sliding window for all tracked fighters.
Call this periodically (e.g. every few minutes) to keep memory bounded.
Sourcepub fn remove_fighter(&self, fighter_id: &FighterId)
pub fn remove_fighter(&self, fighter_id: &FighterId)
Remove all quota state for a given fighter (e.g. when the fighter is killed).
Auto Trait Implementations§
impl Freeze for Scheduler
impl !RefUnwindSafe for Scheduler
impl Send for Scheduler
impl Sync for Scheduler
impl Unpin for Scheduler
impl UnsafeUnpin for Scheduler
impl UnwindSafe for Scheduler
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