pub struct NonceCache { /* private fields */ }Expand description
Per-instance replay-nonce store (DW-036): sharded keyed TTL map, the
GCRA shard store’s shape (GcraShardStore). Self::check_and_insert
is the single critical section — one shard lock covers the
expired-read and the insert, so two concurrent presentations of one
nonce linearize (exactly one wins). Entries expire after the
caller-supplied TTL (twice the clock-skew window, set per insert so a
skew change on reload applies to new nonces without rebuilding the
cache); a shard at
crate::config::limits::MAX_NONCE_CACHE_ENTRIES_PER_SHARD entries
first drops expired entries, then evicts soonest-expiry-first (the
documented fail-open-under-flood trade; see the module docs).
Implementations§
Source§impl NonceCache
impl NonceCache
Sourcepub fn new() -> Self
pub fn new() -> Self
The production cache: NONCE_CACHE_SHARDS shards, each capped
at crate::config::limits::MAX_NONCE_CACHE_ENTRIES_PER_SHARD.
Sourcepub fn with_shard_capacity(cap: usize) -> Self
pub fn with_shard_capacity(cap: usize) -> Self
Test constructor with a small per-shard cap (exercises the eviction cascade without inserting thousands of keys).
Sourcepub fn check_and_insert(&self, key: &str, ttl: Duration) -> bool
pub fn check_and_insert(&self, key: &str, ttl: Duration) -> bool
Remember key for ttl and report whether it was FRESH (not
remembered, or remembered-but-expired): true = this caller is
the first presentation inside the window; false = replay.
Trait Implementations§
Source§impl Debug for NonceCache
impl Debug for NonceCache
Auto Trait Implementations§
impl Freeze for NonceCache
impl RefUnwindSafe for NonceCache
impl Send for NonceCache
impl Sync for NonceCache
impl Unpin for NonceCache
impl UnwindSafe for NonceCache
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§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