pub struct StreamCapacityRegistry { /* private fields */ }Expand description
Issue #761 / S2 — process-wide stream capacity registry. Holds two
counters: a global concurrent-stream count and a per-principal map.
Both are decremented when the StreamCapacityGuard handed back
from a successful try_acquire is dropped, so the release path
covers every normal exit (success, mid-stream error, snapshot
expiry, client disconnect that drops the writer chain, panic
unwind through the stack frame holding the guard).
Implementations§
Source§impl StreamCapacityRegistry
impl StreamCapacityRegistry
pub fn new() -> Arc<StreamCapacityRegistry> ⓘ
Sourcepub fn try_acquire(
self: &Arc<StreamCapacityRegistry>,
principal: &str,
max_global: usize,
max_per_principal: usize,
) -> Result<StreamCapacityGuard, AcquireError>
pub fn try_acquire( self: &Arc<StreamCapacityRegistry>, principal: &str, max_global: usize, max_per_principal: usize, ) -> Result<StreamCapacityGuard, AcquireError>
Attempt to acquire one slot. Both caps are checked under the same lock, so a concurrent acquire+release pair cannot over- issue beyond either ceiling (acceptance criterion #5).
Trait Implementations§
Source§impl Debug for StreamCapacityRegistry
impl Debug for StreamCapacityRegistry
Source§impl Default for StreamCapacityRegistry
impl Default for StreamCapacityRegistry
Source§fn default() -> StreamCapacityRegistry
fn default() -> StreamCapacityRegistry
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !Freeze for StreamCapacityRegistry
impl RefUnwindSafe for StreamCapacityRegistry
impl Send for StreamCapacityRegistry
impl Sync for StreamCapacityRegistry
impl Unpin for StreamCapacityRegistry
impl UnsafeUnpin for StreamCapacityRegistry
impl UnwindSafe for StreamCapacityRegistry
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§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
Mutably borrows from an owned value. Read more
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