pub struct RateLimitInterceptor { /* private fields */ }Expand description
A fixed-window rate limiting ServerInterceptor.
Tracks request counts per caller key using a simple fixed-window counter. When the limit is exceeded, rejects the request with an A2A error.
Caller keys are derived in this order:
CallContext::caller_identity(set by auth interceptors)x-forwarded-forHTTP header (first IP)"anonymous"fallback
Implementations§
Source§impl RateLimitInterceptor
impl RateLimitInterceptor
Sourcepub fn new(config: RateLimitConfig) -> Self
pub fn new(config: RateLimitConfig) -> Self
Creates a new rate limiter with the given configuration.
Trait Implementations§
Source§impl Debug for RateLimitInterceptor
impl Debug for RateLimitInterceptor
Source§impl ServerInterceptor for RateLimitInterceptor
impl ServerInterceptor for RateLimitInterceptor
Auto Trait Implementations§
impl !Freeze for RateLimitInterceptor
impl !RefUnwindSafe for RateLimitInterceptor
impl Send for RateLimitInterceptor
impl Sync for RateLimitInterceptor
impl Unpin for RateLimitInterceptor
impl UnsafeUnpin for RateLimitInterceptor
impl UnwindSafe for RateLimitInterceptor
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
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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>
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 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>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request