Struct OutgoingThrottleLayer
pub struct OutgoingThrottleLayer { /* private fields */ }net only.Expand description
A Layer that wraps a Service’s output IO Stream with
a byte-rate throttle. See ThrottledIo.
Directions are relative to the established connection: read
throttles ingress from the upstream, write paces egress toward it.
Implementations§
§impl OutgoingThrottleLayer
impl OutgoingThrottleLayer
pub fn symmetric(mode: ThrottleMode) -> OutgoingThrottleLayer
pub fn symmetric(mode: ThrottleMode) -> OutgoingThrottleLayer
Create a new OutgoingThrottleLayer throttling both directions
with the given ThrottleMode.
ThrottleMode::PerConn gives each direction its own
(independent) bucket; ThrottleMode::Shared spends both
directions from the same aggregate budget.
pub fn read_only(mode: ThrottleMode) -> OutgoingThrottleLayer
pub fn read_only(mode: ThrottleMode) -> OutgoingThrottleLayer
Create a new OutgoingThrottleLayer throttling only the read
(ingress from upstream) direction.
pub fn write_only(mode: ThrottleMode) -> OutgoingThrottleLayer
pub fn write_only(mode: ThrottleMode) -> OutgoingThrottleLayer
Create a new OutgoingThrottleLayer throttling only the write
(egress to upstream) direction.
pub fn new(
read: Option<ThrottleMode>,
write: Option<ThrottleMode>,
) -> OutgoingThrottleLayer
pub fn new( read: Option<ThrottleMode>, write: Option<ThrottleMode>, ) -> OutgoingThrottleLayer
Create a new OutgoingThrottleLayer with per-direction modes.
pub fn maybe_with_quantum(self, quantum: Option<u64>) -> OutgoingThrottleLayer
pub fn maybe_with_quantum(self, quantum: Option<u64>) -> OutgoingThrottleLayer
Override the grant quantum in bytes: the budget reserved per IO operation (clamped to the burst capacity; defaults to a tenth of a period worth of bytes, at most 16 KiB).
pub fn maybe_set_quantum(
&mut self,
quantum: Option<u64>,
) -> &mut OutgoingThrottleLayer
pub fn maybe_set_quantum( &mut self, quantum: Option<u64>, ) -> &mut OutgoingThrottleLayer
Override the grant quantum in bytes: the budget reserved per IO operation (clamped to the burst capacity; defaults to a tenth of a period worth of bytes, at most 16 KiB).
pub fn with_quantum(self, quantum: u64) -> OutgoingThrottleLayer
pub fn with_quantum(self, quantum: u64) -> OutgoingThrottleLayer
Override the grant quantum in bytes: the budget reserved per IO operation (clamped to the burst capacity; defaults to a tenth of a period worth of bytes, at most 16 KiB).
pub fn set_quantum(&mut self, quantum: u64) -> &mut OutgoingThrottleLayer
pub fn set_quantum(&mut self, quantum: u64) -> &mut OutgoingThrottleLayer
Override the grant quantum in bytes: the budget reserved per IO operation (clamped to the burst capacity; defaults to a tenth of a period worth of bytes, at most 16 KiB).
pub fn without_quantum(self) -> OutgoingThrottleLayer
pub fn without_quantum(self) -> OutgoingThrottleLayer
Override the grant quantum in bytes: the budget reserved per IO operation (clamped to the burst capacity; defaults to a tenth of a period worth of bytes, at most 16 KiB).
pub fn unset_quantum(&mut self) -> &mut OutgoingThrottleLayer
pub fn unset_quantum(&mut self) -> &mut OutgoingThrottleLayer
Override the grant quantum in bytes: the budget reserved per IO operation (clamped to the burst capacity; defaults to a tenth of a period worth of bytes, at most 16 KiB).
Trait Implementations§
§impl Clone for OutgoingThrottleLayer
impl Clone for OutgoingThrottleLayer
§fn clone(&self) -> OutgoingThrottleLayer
fn clone(&self) -> OutgoingThrottleLayer
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for OutgoingThrottleLayer
impl Debug for OutgoingThrottleLayer
§impl Default for OutgoingThrottleLayer
impl Default for OutgoingThrottleLayer
§fn default() -> OutgoingThrottleLayer
fn default() -> OutgoingThrottleLayer
§impl<S> Layer<S> for OutgoingThrottleLayer
impl<S> Layer<S> for OutgoingThrottleLayer
§type Service = OutgoingThrottleService<S>
type Service = OutgoingThrottleService<S>
§fn layer(&self, inner: S) -> <OutgoingThrottleLayer as Layer<S>>::Service
fn layer(&self, inner: S) -> <OutgoingThrottleLayer as Layer<S>>::Service
§fn into_layer(self, inner: S) -> Self::Service
fn into_layer(self, inner: S) -> Self::Service
layer but consuming self after the service was created. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for OutgoingThrottleLayer
impl !UnwindSafe for OutgoingThrottleLayer
impl Freeze for OutgoingThrottleLayer
impl Send for OutgoingThrottleLayer
impl Sync for OutgoingThrottleLayer
impl Unpin for OutgoingThrottleLayer
impl UnsafeUnpin for OutgoingThrottleLayer
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> Conv for T
impl<T> Conv for T
impl<T> ErasedDestructor for Twhere
T: 'static,
§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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§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§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.