Skip to main content

RateLimitMetricsSink

Trait RateLimitMetricsSink 

Source
pub trait RateLimitMetricsSink: Send + Sync {
    // Required methods
    fn rejected(&self, layer: RejectLayer);
    fn prune_sweep_per_ip(&self);
    fn prune_sweep_per_peer(&self);
    fn set_tracked_per_ip(&self, n: usize);
    fn set_tracked_per_peer(&self, n: usize);
}
Expand description

Metrics fan-out for a ThreeLayerRateLimiter. Each protocol path (cdn/dht/v1, cdn/probe/v1) supplies an implementation that routes to its own operator-visible counters/gauges, so the limiter core stays backend-agnostic. Implementations must be cheap and lock-free on the hot rejected path.

Required Methods§

Source

fn rejected(&self, layer: RejectLayer)

Record a request rejected at layer (the cheapest-first layer that drained the budget). Called at most once per rejected request.

Source

fn prune_sweep_per_ip(&self)

Record a retain_recent sweep of the per-IP keyed-limiter map (#645).

Source

fn prune_sweep_per_peer(&self)

Record a retain_recent sweep of the per-peer keyed-limiter map (#645).

Source

fn set_tracked_per_ip(&self, n: usize)

Publish the per-IP keyed-limiter map size after a prune (#645).

Source

fn set_tracked_per_peer(&self, n: usize)

Publish the per-peer keyed-limiter map size after a prune (#645).

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§