pub struct MemorySessionStore { /* private fields */ }memory only.Expand description
In-memory session store backed by DashMap.
For testing and single-node development only. Not suitable for production:
- Data is lost on process restart.
- No encryption at rest.
Expired sessions are automatically purged every 1024 write operations.
Call MemorySessionStore::purge_expired for on-demand cleanup.
§Time injection
Stores created_at as chrono::DateTime<Utc> against the injected
Clock (default
SystemClock). DST tests can
drive expiry deterministically by constructing the store with
with_clock and a MockClock.
In-memory session store. Suitable for tests and single-process
examples; not durable across restarts and not shared across nodes.
Thin newtype around MemoryStore<SessionId, SessionData> (the
shared Store<K, V> backend from
axess_core::store). The session-domain
SessionStore::cycle lives on this wrapper because Store<K, V>
has no equivalent (cycle is a session-domain rename primitive, not
a kv primitive); everything else delegates to the inner backend.
Implementations§
Source§impl MemorySessionStore
impl MemorySessionStore
Sourcepub fn with_clock(self, clock: Arc<dyn Clock>) -> Self
pub fn with_clock(self, clock: Arc<dyn Clock>) -> Self
Inject a Clock for deterministic
simulation testing. In production, leave at the default
SystemClock. Flows through to
the underlying MemoryStore so TTL bookkeeping uses the
same time source.
Sourcepub fn purge_expired(&self)
pub fn purge_expired(&self)
Remove all expired sessions. Call from a background task or let the auto-purge handle it (runs every 1024 writes).
Trait Implementations§
Source§impl Clone for MemorySessionStore
impl Clone for MemorySessionStore
Source§fn clone(&self) -> MemorySessionStore
fn clone(&self) -> MemorySessionStore
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Default for MemorySessionStore
impl Default for MemorySessionStore
Source§impl HealthCheck for MemorySessionStore
impl HealthCheck for MemorySessionStore
Source§impl SessionStore for MemorySessionStore
impl SessionStore for MemorySessionStore
Source§type Error = Infallible
type Error = Infallible
Source§async fn load(&self, id: &SessionId) -> Result<Option<SessionData>, Self::Error>
async fn load(&self, id: &SessionId) -> Result<Option<SessionData>, Self::Error>
None if the session
does not exist or has expired.Source§async fn save(
&self,
id: &SessionId,
data: &SessionData,
ttl: Duration,
) -> Result<(), Self::Error>
async fn save( &self, id: &SessionId, data: &SessionData, ttl: Duration, ) -> Result<(), Self::Error>
Source§async fn delete(&self, id: &SessionId) -> Result<(), Self::Error>
async fn delete(&self, id: &SessionId) -> Result<(), Self::Error>
Source§async fn cycle(
&self,
old_id: &SessionId,
new_id: &SessionId,
data: &SessionData,
ttl: Duration,
) -> Result<(), Self::Error>
async fn cycle( &self, old_id: &SessionId, new_id: &SessionId, data: &SessionData, ttl: Duration, ) -> Result<(), Self::Error>
Auto Trait Implementations§
impl Freeze for MemorySessionStore
impl !RefUnwindSafe for MemorySessionStore
impl Send for MemorySessionStore
impl Sync for MemorySessionStore
impl Unpin for MemorySessionStore
impl UnsafeUnpin for MemorySessionStore
impl !UnwindSafe for MemorySessionStore
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> 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<'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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.