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§
Sourcefn rejected(&self, layer: RejectLayer)
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.
Sourcefn prune_sweep_per_ip(&self)
fn prune_sweep_per_ip(&self)
Record a retain_recent sweep of the per-IP keyed-limiter map (#645).
Sourcefn prune_sweep_per_peer(&self)
fn prune_sweep_per_peer(&self)
Record a retain_recent sweep of the per-peer keyed-limiter map (#645).
Sourcefn set_tracked_per_ip(&self, n: usize)
fn set_tracked_per_ip(&self, n: usize)
Publish the per-IP keyed-limiter map size after a prune (#645).
Sourcefn set_tracked_per_peer(&self, n: usize)
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".