Skip to main content

StateStore

Struct StateStore 

Source
pub struct StateStore { /* private fields */ }

Implementations§

Source§

impl StateStore

Source

pub fn new_empty() -> Self

Create a fresh in-memory store with no backing file (useful for tests).

Source

pub fn load(path: &Path) -> Self

Source

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.

Source

pub fn is_available(&self, name: &str) -> bool

Source

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.

Source

pub fn next_rr_index(&self) -> usize

Fetch-and-increment monotonic counter for round-robin account cycling.

Source

pub fn account_states(&self) -> HashMap<String, AccountState>

Returns a snapshot of all account states for the status endpoint.

Source

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).

Source

pub fn record_request_burst(&self, name: &str)

Record a request timestamp for burst-rate tracking.

Source

pub fn set_cooldown(&self, name: &str, duration_ms: u64)

Source

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.

Source

pub fn disable_account(&self, name: &str)

Source

pub fn set_auth_failed(&self, name: &str)

Source

pub fn clear_auth_failed(&self, name: &str)

Clear auth_failed + disabled for an account after a successful token refresh.

Source

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.

Source

pub fn is_health_check_failed(&self, name: &str) -> bool

Source

pub fn set_health_check_failed(&self, name: &str)

Source

pub fn clear_health_check_failed(&self, name: &str)

Source

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.

Source

pub fn update_last_health_check(&self, name: &str) -> u64

Update last_health_check_ms to now. Returns the previous value.

Source

pub fn health_check_info(&self, name: &str) -> (u64, u32)

Get the last health check timestamp and consecutive failure count.

Source

pub fn get_sticky(&self, fingerprint: &str) -> Option<String>

Source

pub fn set_sticky(&self, fingerprint: &str, account_name: &str, ttl_ms: u64)

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn quota_snapshot(&self) -> HashMap<String, QuotaWindow>

Snapshot of all quota windows for the status endpoint.

Source

pub fn update_rate_limits(&self, name: &str, info: RateLimitInfo)

Source

pub fn rate_limit_snapshot(&self) -> HashMap<String, RateLimitInfo>

Source

pub fn get_pinned(&self) -> Option<String>

Source

pub fn set_pinned(&self, name: Option<String>)

Source

pub fn get_last_used(&self) -> Option<String>

Source

pub fn set_last_used(&self, name: &str)

Source

pub fn get_model_override(&self) -> Option<String>

Source

pub fn set_model_override(&self, model: String)

Source

pub fn clear_model_override(&self)

Source

pub fn get_routing_strategy(&self) -> Option<RoutingStrategy>

Source

pub fn set_routing_strategy(&self, strategy: RoutingStrategy)

Source

pub fn clear_routing_strategy(&self)

Source

pub fn get_burst_rpm_limit_override(&self) -> Option<u32>

Source

pub fn set_burst_rpm_limit_override(&self, limit: u32)

Source

pub fn clear_burst_rpm_limit_override(&self)

Source

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”.

Source

pub fn set_fallback_model_override(&self, model: Option<String>)

Source

pub fn clear_fallback_model_override(&self)

Source

pub fn get_effort_override(&self) -> Option<String>

Source

pub fn set_effort_override(&self, effort: String)

Source

pub fn clear_effort_override(&self)

Source

pub fn get_thinking_override(&self) -> Option<String>

Source

pub fn set_thinking_override(&self, mode: String)

Source

pub fn clear_thinking_override(&self)

Source

pub fn get_alerts_muted(&self) -> bool

Source

pub fn set_alerts_muted(&self, muted: bool)

Source

pub fn record_request(&self, log: RequestLog)

Source

pub fn recent_requests_snapshot(&self) -> Vec<RequestLog>

Most-recent first snapshot for the monitor / status endpoint.

Source

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.

Source

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

Source§

fn clone(&self) -> StateStore

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more