OpenAgentID documentation
Source referencesRust module referencearsenal-broker

arsenal-broker · rate

Declared module signatures, types, configuration, and source documentation.

Source: arsenal/crates/arsenal-broker/src/rate.rs. SHA-256: acf9b257612b3e15bb618bf2c995edb440ab98f13f0d3403486c0a2104e242ec.

This source reference follows declared modules and preserves feature attributes. It includes public declarations and implementation methods in those modules. Private-module exports and trait resolution still require the compiler; not every declaration is a crate-root import. Function bodies and constant values are omitted. Source comments describe their implementation context and are not a production deployment claim.

rate::RateLimitResult

Result of a rate limit check

#[derive(Debug, Clone)]
pub enum RateLimitResult {
    /// Request is allowed
    Allowed {
        /// Remaining requests in the current window
        remaining: u64,
    },
    /// Request is rate limited
    Limited {
        /// Seconds until the limit resets
        retry_after: u64,
    },
}

Source line: 13.

rate::RateLimiter

Rate limiter with per-key token buckets

pub struct RateLimiter {

}

Source line: 99.

rate::RateLimitConfig

Configuration for a specific rate limit key

#[derive(Debug, Clone)]
pub struct RateLimitConfig {
/// Maximum tokens

pub max_tokens: u64,
/// Refill rate (tokens per second)

pub refill_rate_tokens_per_second: u64
}

Source line: 112.

rate::RateLimiter::new

Create a new rate limiter

Arguments

  • requests_per_second - Base rate limit
  • burst_size - Maximum burst capacity
#[must_use]
pub fn new(requests_per_second: u64, burst_size: u64) -> Self;

Source line: 126.

rate::RateLimiter::set_override

Set a rate limit override for a specific key pattern

pub async fn set_override(&self, key_pattern: impl Into<String>, config: RateLimitConfig);

Source line: 136.

rate::RateLimiter::check

Check rate limit for a key

pub async fn check(&self, key: &str) -> RateLimitResult;

Source line: 142.

rate::RateLimiter::peek

Check rate limit without consuming a token

pub async fn peek(&self, key: &str) -> RateLimitResult;

Source line: 181.

rate::RateLimiter::reset

Reset rate limit for a key

pub async fn reset(&self, key: &str);

Source line: 204.

rate::RateLimiter::cleanup

Clean up expired buckets (call periodically)

pub async fn cleanup(&self, max_age: Duration);

Source line: 210.

rate::RateLimiter::status

Get current status for a key

pub async fn status(&self, key: &str) -> Option<RateLimitStatus>;

Source line: 221.

rate::RateLimitStatus

Rate limit status for a key

#[derive(Debug, Clone, serde::Serialize)]
pub struct RateLimitStatus {
/// Remaining requests

pub remaining: u64,
/// Total limit

pub limit: u64,
/// Seconds until full reset

pub reset_in_seconds: u64
}

Source line: 238.

rate::SlidingWindowRateLimiter

Sliding window rate limiter (alternative implementation)

pub struct SlidingWindowRateLimiter {

}

Source line: 248.

rate::SlidingWindowRateLimiter::new

Create a new sliding window rate limiter

#[must_use]
pub fn new(window_size: Duration, max_requests: u64) -> Self;

Source line: 260.

rate::SlidingWindowRateLimiter::check

Check rate limit

pub async fn check(&self, key: &str) -> RateLimitResult;

Source line: 269.

rate::SlidingWindowRateLimiter::cleanup

Clean up old entries

pub async fn cleanup(&self);

Source line: 296.

On this page