Struct BodyLimit
pub struct BodyLimit { /* private fields */ }http and std only.Expand description
Communicates a hard streaming limit for server-side HTTP request and/or response bodies.
A crate::BodyLimitLayer stores this value on a transport’s extensions.
Rama’s HTTP server copies those extensions into each request and applies the
configured limits while the L7 bodies are polled. A value of zero disables
the corresponding limit.
Crossing a limit does not synthesize an HTTP status. Frames that fit are
forwarded unchanged; the first data frame that would exceed the remaining
budget is discarded and the body yields a
crate::body::util::LengthLimitError. For a response, headers and earlier
frames may already have been sent, so the HTTP transport terminates or resets
that response according to its protocol.
Implementations§
§impl BodyLimit
impl BodyLimit
pub fn request_only(limit: usize) -> BodyLimit
pub fn request_only(limit: usize) -> BodyLimit
Create a new BodyLimit, with the given limit to be applied to the request only.
pub fn response_only(limit: usize) -> BodyLimit
pub fn response_only(limit: usize) -> BodyLimit
Create a new BodyLimit, with the given limit to be applied to the response only.
pub fn symmetric(limit: usize) -> BodyLimit
pub fn symmetric(limit: usize) -> BodyLimit
Create a new BodyLimit, with the given limit to be applied to both the request and response bodies.
pub fn asymmetric(request: usize, response: usize) -> BodyLimit
pub fn asymmetric(request: usize, response: usize) -> BodyLimit
Create a new BodyLimit, with the given limits
respectively to be applied to the request and response bodies.
Trait Implementations§
impl Copy for BodyLimit
impl Extension for BodyLimit
impl HttpExtension for BodyLimit
Auto Trait Implementations§
impl Freeze for BodyLimit
impl RefUnwindSafe for BodyLimit
impl Send for BodyLimit
impl Sync for BodyLimit
impl Unpin for BodyLimit
impl UnsafeUnpin for BodyLimit
impl UnwindSafe for BodyLimit
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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> ⓘ
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> ⓘ
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more