pub struct InMemorySessionStoreFactory { /* private fields */ }Expand description
Session-id-keyed factory: the same in-memory store is returned for a given session across opens (so a worker rebuild sees the session’s state), and a fresh store is created on first use. Inline durability tier.
Implementations§
Source§impl InMemorySessionStoreFactory
impl InMemorySessionStoreFactory
pub fn new() -> InMemorySessionStoreFactory
pub fn with_clock(clock: Arc<dyn Clock>) -> InMemorySessionStoreFactory
Trait Implementations§
Source§impl Clone for InMemorySessionStoreFactory
impl Clone for InMemorySessionStoreFactory
Source§fn clone(&self) -> InMemorySessionStoreFactory
fn clone(&self) -> InMemorySessionStoreFactory
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 moreSource§impl Default for InMemorySessionStoreFactory
impl Default for InMemorySessionStoreFactory
Source§fn default() -> InMemorySessionStoreFactory
fn default() -> InMemorySessionStoreFactory
Returns the “default value” for a type. Read more
Source§impl SessionStoreFactory for InMemorySessionStoreFactory
impl SessionStoreFactory for InMemorySessionStoreFactory
Source§fn durability_tier(&self) -> DurabilityTier
fn durability_tier(&self) -> DurabilityTier
Durability tier the stores produced by this factory provide; defaults to
[
DurabilityTier::Inline].fn create_store<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 SessionStoreCreateRequest,
) -> Pin<Box<dyn Future<Output = Result<Arc<dyn RuntimePersistence>, String>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemorySessionStoreFactory: 'async_trait,
fn open_existing_store<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 SessionStoreCreateRequest,
) -> Pin<Box<dyn Future<Output = Result<Option<Arc<dyn RuntimePersistence>>, String>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemorySessionStoreFactory: 'async_trait,
fn delete_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemorySessionStoreFactory: 'async_trait,
Source§fn live_attachment_refs<'life0, 'async_trait>(
&'life0 self,
intent_grace_cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<BTreeSet<AttachmentId>, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemorySessionStoreFactory: 'async_trait,
fn live_attachment_refs<'life0, 'async_trait>(
&'life0 self,
intent_grace_cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<BTreeSet<AttachmentId>, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemorySessionStoreFactory: 'async_trait,
The attachment GC root set across ALL sessions this factory owns,
reconciled against
intent_grace_cutoff_epoch_ms: every committed ref,
plus every uncommitted intent younger than the cutoff. Intents at or
before the cutoff are crash orphans (their turn never committed and has
aged past the grace window) — the factory forgets them and excludes them,
so their blobs become collectable. Factories with no attachment story
default to empty; the durable factories override this (Postgres queries
and prunes the global manifest table; SQLite unions and reconciles its
per-session databases at sweep time). Exposed to the GC lever via the
blanket AttachmentRootSet implementation.Source§fn has_live_attachment_ref<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AttachmentId,
intent_grace_cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemorySessionStoreFactory: 'async_trait,
fn has_live_attachment_ref<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AttachmentId,
intent_grace_cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemorySessionStoreFactory: 'async_trait,
Whether ANY session this factory owns currently holds a GC-live ref for
attachment_id (a committed ref, or an uncommitted intent younger than
the cutoff). The single-id counterpart to
Self::live_attachment_refs, used by the attachment GC lever’s
delete-time root re-check so it need not re-materialize the whole root set
per candidate blob. The default re-materializes the root set and tests
membership; the durable factories override with a targeted single-id query
(Postgres one indexed SELECT; SQLite iterates its per-session databases
only until the first hit). Read moreAuto Trait Implementations§
impl !RefUnwindSafe for InMemorySessionStoreFactory
impl !UnwindSafe for InMemorySessionStoreFactory
impl Freeze for InMemorySessionStoreFactory
impl Send for InMemorySessionStoreFactory
impl Sync for InMemorySessionStoreFactory
impl Unpin for InMemorySessionStoreFactory
impl UnsafeUnpin for InMemorySessionStoreFactory
Blanket Implementations§
Source§impl<T> AttachmentRootSet for Twhere
T: SessionStoreFactory + ?Sized,
impl<T> AttachmentRootSet for Twhere
T: SessionStoreFactory + ?Sized,
Source§fn live_attachment_refs<'life0, 'async_trait>(
&'life0 self,
intent_grace_cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<BTreeSet<AttachmentId>, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
fn live_attachment_refs<'life0, 'async_trait>(
&'life0 self,
intent_grace_cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<BTreeSet<AttachmentId>, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
The live root set, reconciled against
intent_grace_cutoff_epoch_ms. Read moreSource§fn has_live_attachment_ref<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AttachmentId,
intent_grace_cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
T: 'async_trait,
fn has_live_attachment_ref<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 AttachmentId,
intent_grace_cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
T: 'async_trait,
Whether a single id currently has a live root — a committed ref, or an
uncommitted intent younger than
intent_grace_cutoff_epoch_ms. Read moreSource§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