pub struct StateStore { /* private fields */ }Implementations§
Source§impl StateStore
impl StateStore
Sourcepub fn new_empty() -> Self
pub fn new_empty() -> Self
Create a fresh in-memory store with no backing file (useful for tests).
pub fn load(path: &Path) -> Self
Sourcepub fn flush_sync(&self)
pub fn flush_sync(&self)
Force a synchronous write to disk. Called at graceful shutdown to ensure the final state (including the last few requests and token counts) is persisted before the process exits.
pub fn is_available(&self, name: &str) -> bool
Sourcepub fn is_exhausted(&self, name: &str) -> bool
pub fn is_exhausted(&self, name: &str) -> bool
Returns true if the account’s Anthropic quota is currently exhausted in any active window (5h or 7d) — i.e. sending another request will get a 429.
Sourcepub fn next_rr_index(&self) -> usize
pub fn next_rr_index(&self) -> usize
Fetch-and-increment monotonic counter for round-robin account cycling.
Sourcepub fn account_states(&self) -> HashMap<String, AccountState>
pub fn account_states(&self) -> HashMap<String, AccountState>
Returns a snapshot of all account states for the status endpoint.
Sourcepub fn routing_snapshot(&self) -> RoutingSnapshot
pub fn routing_snapshot(&self) -> RoutingSnapshot
Single-lock snapshot of everything the router needs for account selection. Avoids per-account mutex acquisitions (O(N) → O(1) locks per pick_account call).
Sourcepub fn record_request_burst(&self, name: &str)
pub fn record_request_burst(&self, name: &str)
Record a request timestamp for burst-rate tracking.
pub fn set_cooldown(&self, name: &str, duration_ms: u64)
Sourcepub fn set_cooldown_staggered(&self, name: &str, duration_ms: u64)
pub fn set_cooldown_staggered(&self, name: &str, duration_ms: u64)
Like set_cooldown, but staggers the deadline so it doesn’t collide with
other accounts already cooling. Prevents the cascade where both accounts
expire simultaneously, both get 429’d again, and loop forever.
Adds 5s offset per account already cooling within ±5s of our target deadline.
pub fn disable_account(&self, name: &str)
pub fn set_auth_failed(&self, name: &str)
Sourcepub fn clear_auth_failed(&self, name: &str)
pub fn clear_auth_failed(&self, name: &str)
Clear auth_failed + disabled for an account after a successful token refresh.
Sourcepub fn auth_failed_accounts<'a>(&self, names: &[&'a str]) -> Vec<&'a str>
pub fn auth_failed_accounts<'a>(&self, names: &[&'a str]) -> Vec<&'a str>
Returns names of accounts (from the given list) that have auth_failed set.
pub fn is_health_check_failed(&self, name: &str) -> bool
pub fn set_health_check_failed(&self, name: &str)
pub fn clear_health_check_failed(&self, name: &str)
Sourcepub fn record_health_check_failure(&self, name: &str, threshold: u32) -> u32
pub fn record_health_check_failure(&self, name: &str, threshold: u32) -> u32
Increment consecutive failure count and return the new value.
Sets health_check_failed = true once failures >= threshold.
Sourcepub fn update_last_health_check(&self, name: &str) -> u64
pub fn update_last_health_check(&self, name: &str) -> u64
Update last_health_check_ms to now. Returns the previous value.
Sourcepub fn health_check_info(&self, name: &str) -> (u64, u32)
pub fn health_check_info(&self, name: &str) -> (u64, u32)
Get the last health check timestamp and consecutive failure count.
pub fn get_sticky(&self, fingerprint: &str) -> Option<String>
pub fn set_sticky(&self, fingerprint: &str, account_name: &str, ttl_ms: u64)
Sourcepub fn reset_5h_secs(&self, name: &str) -> Option<u64>
pub fn reset_5h_secs(&self, name: &str) -> Option<u64>
Unix epoch seconds when this account’s 5h window resets. Returns None if unknown or already past.
Sourcepub fn utilization_5h(&self, name: &str) -> f64
pub fn utilization_5h(&self, name: &str) -> f64
5-hour utilization 0.0–1.0 from the last upstream response headers. Returns 0.0 for fresh accounts or when the reset window has already passed.
Sourcepub fn utilization_7d(&self, name: &str) -> f64
pub fn utilization_7d(&self, name: &str) -> f64
7-day utilization 0.0–1.0 from the last upstream response headers. Returns 0.0 for fresh accounts or when the reset window has already passed.
Sourcepub fn reset_7d_secs(&self, name: &str) -> Option<u64>
pub fn reset_7d_secs(&self, name: &str) -> Option<u64>
Unix epoch seconds when this account’s 7d window resets. Returns None if unknown or already past.
Sourcepub fn record_usage(&self, name: &str, input_tokens: u64, output_tokens: u64)
pub fn record_usage(&self, name: &str, input_tokens: u64, output_tokens: u64)
Record token usage from a completed request. Lazily resets the window if the 5-hour period has elapsed.
Sourcepub fn quota_snapshot(&self) -> HashMap<String, QuotaWindow>
pub fn quota_snapshot(&self) -> HashMap<String, QuotaWindow>
Snapshot of all quota windows for the status endpoint.
pub fn update_rate_limits(&self, name: &str, info: RateLimitInfo)
pub fn rate_limit_snapshot(&self) -> HashMap<String, RateLimitInfo>
pub fn get_pinned(&self) -> Option<String>
pub fn set_pinned(&self, name: Option<String>)
pub fn get_last_used(&self) -> Option<String>
pub fn set_last_used(&self, name: &str)
pub fn get_model_override(&self) -> Option<String>
pub fn set_model_override(&self, model: String)
pub fn clear_model_override(&self)
pub fn get_routing_strategy(&self) -> Option<RoutingStrategy>
pub fn set_routing_strategy(&self, strategy: RoutingStrategy)
pub fn clear_routing_strategy(&self)
pub fn get_burst_rpm_limit_override(&self) -> Option<u32>
pub fn set_burst_rpm_limit_override(&self, limit: u32)
pub fn clear_burst_rpm_limit_override(&self)
Sourcepub fn get_fallback_model_override(&self) -> Option<Option<String>>
pub fn get_fallback_model_override(&self) -> Option<Option<String>>
Returns Some(Some("model")) for explicit override, Some(None) for explicitly disabled,
None for “use config/auto”.
pub fn set_fallback_model_override(&self, model: Option<String>)
pub fn clear_fallback_model_override(&self)
pub fn get_effort_override(&self) -> Option<String>
pub fn set_effort_override(&self, effort: String)
pub fn clear_effort_override(&self)
pub fn get_thinking_override(&self) -> Option<String>
pub fn set_thinking_override(&self, mode: String)
pub fn clear_thinking_override(&self)
pub fn get_alerts_muted(&self) -> bool
pub fn set_alerts_muted(&self, muted: bool)
pub fn record_request(&self, log: RequestLog)
Sourcepub fn recent_requests_snapshot(&self) -> Vec<RequestLog>
pub fn recent_requests_snapshot(&self) -> Vec<RequestLog>
Most-recent first snapshot for the monitor / status endpoint.
Sourcepub fn record_global(&self, model: &str, input_tokens: u64, output_tokens: u64)
pub fn record_global(&self, model: &str, input_tokens: u64, output_tokens: u64)
Record tokens + API cost globally (across all accounts) for the savings display.
Sourcepub fn savings_snapshot(&self) -> SavingsSnapshot
pub fn savings_snapshot(&self) -> SavingsSnapshot
Snapshot of daily and all-time savings for the status endpoint and CLI.
Trait Implementations§
Source§impl Clone for StateStore
impl Clone for StateStore
Source§fn clone(&self) -> StateStore
fn clone(&self) -> StateStore
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for StateStore
impl !UnwindSafe for StateStore
impl Freeze for StateStore
impl Send for StateStore
impl Sync for StateStore
impl Unpin for StateStore
impl UnsafeUnpin for StateStore
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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>
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>
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