pub struct DemoRuntime { /* private fields */ }Implementations§
Source§impl DemoRuntime
impl DemoRuntime
pub fn try_acquire_global_run( &self, ) -> Result<OwnedSemaphorePermit, TryAcquireError>
pub fn try_acquire_global_sse( &self, ) -> Result<OwnedSemaphorePermit, TryAcquireError>
pub fn try_acquire_ordinary_request( &self, ) -> Result<OwnedSemaphorePermit, TryAcquireError>
Sourcepub async fn lock_start_admission(&self) -> OwnedMutexGuard<()>
pub async fn lock_start_admission(&self) -> OwnedMutexGuard<()>
Serializes the short admission phase that checks global row capacity and persists a prepared run. Without this guard, several simultaneous starts could all observe one remaining row slot before any of them inserted, exceeding the fixed global Demo cap.
pub async fn try_acquire_visitor_run( &self, token_hash: &str, limit: u32, ) -> Result<OwnedSemaphorePermit, TryAcquireError>
pub async fn try_acquire_visitor_sse( &self, token_hash: &str, limit: u32, ) -> Result<OwnedSemaphorePermit, TryAcquireError>
Sourcepub async fn reserve_accepted_start(
&self,
token_hash: &str,
client_ip: &str,
now: DateTime<Utc>,
policy: DemoPolicy,
) -> Result<DemoAcceptedStart, DemoQuotaExceeded>
pub async fn reserve_accepted_start( &self, token_hash: &str, client_ip: &str, now: DateTime<Utc>, policy: DemoPolicy, ) -> Result<DemoAcceptedStart, DemoQuotaExceeded>
Atomically reserves one accepted-start slot in both the visitor-token and client-IP windows. A caller that fails before scheduling the run must release the returned handle; a successfully scheduled run leaves it recorded until the fixed window expires.
pub async fn release_accepted_start(&self, accepted: DemoAcceptedStart)
Sourcepub async fn cleanup(&self, now: DateTime<Utc>, policy: DemoPolicy)
pub async fn cleanup(&self, now: DateTime<Utc>, policy: DemoPolicy)
Reclaims expired quota entries and inactive per-visitor semaphores during the periodic Demo cleanup pass, including tokens that never make another request.
Trait Implementations§
Source§impl Clone for DemoRuntime
impl Clone for DemoRuntime
Source§fn clone(&self) -> DemoRuntime
fn clone(&self) -> DemoRuntime
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for DemoRuntime
impl !UnwindSafe for DemoRuntime
impl Freeze for DemoRuntime
impl Send for DemoRuntime
impl Sync for DemoRuntime
impl Unpin for DemoRuntime
impl UnsafeUnpin for DemoRuntime
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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>
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 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>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].