pub struct InMemoryFrameStore { /* private fields */ }Expand description
Lock-free in-memory FrameStoreGat implementation.
Frames are stored per stream in a VecDeque in append order. Lookups
scan the per-stream deque under a single shard lock, so cost grows linearly
with frame history depth — fine for the bounded sizes we cap at.
Implementations§
Source§impl InMemoryFrameStore
impl InMemoryFrameStore
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a store with the default per-stream cap
(DEFAULT_FRAME_HISTORY_PER_STREAM).
Sourcepub fn with_capacity(max_frames_per_stream: usize) -> Self
pub fn with_capacity(max_frames_per_stream: usize) -> Self
Create a store with an explicit per-stream cap.
max_frames_per_stream must be at least 1 — a zero cap would drop every
frame on insertion and is rejected via debug assertion (the constructor
silently substitutes 1 in release builds).
Sourcepub fn stream_count(&self) -> usize
pub fn stream_count(&self) -> usize
Number of streams that currently have frame history.
Trait Implementations§
Source§impl Debug for InMemoryFrameStore
impl Debug for InMemoryFrameStore
Source§impl Default for InMemoryFrameStore
impl Default for InMemoryFrameStore
Source§impl FrameStoreGat for InMemoryFrameStore
impl FrameStoreGat for InMemoryFrameStore
Source§type AppendFramesFuture<'a> = impl Future<Output = Result<(), DomainError>> + Send + 'a
where
Self: 'a
type AppendFramesFuture<'a> = impl Future<Output = Result<(), DomainError>> + Send + 'a where Self: 'a
Append frames produced for
stream_id. Frames are stored in append
order (which equals sequence order, since frames are emitted with
monotonically increasing sequence numbers). Read moreSource§type GetFramesFuture<'a> = impl Future<Output = Result<FrameStorePage, DomainError>> + Send + 'a
where
Self: 'a
type GetFramesFuture<'a> = impl Future<Output = Result<FrameStorePage, DomainError>> + Send + 'a where Self: 'a
Retrieve frames for
stream_id honoring the optional filters. Read moreSource§type DeleteFramesForStreamFuture<'a> = impl Future<Output = Result<(), DomainError>> + Send + 'a
where
Self: 'a
type DeleteFramesForStreamFuture<'a> = impl Future<Output = Result<(), DomainError>> + Send + 'a where Self: 'a
Drop every frame stored for
stream_id. Read moreSource§fn append_frames(
&self,
stream_id: StreamId,
frames: Vec<Frame>,
) -> Self::AppendFramesFuture<'_>
fn append_frames( &self, stream_id: StreamId, frames: Vec<Frame>, ) -> Self::AppendFramesFuture<'_>
Append frames produced for
stream_id. Frames are stored in append
order (which equals sequence order, since frames are emitted with
monotonically increasing sequence numbers).Source§fn get_frames(
&self,
stream_id: StreamId,
since_sequence: Option<u64>,
priority_filter: Option<Priority>,
limit: Option<usize>,
) -> Self::GetFramesFuture<'_>
fn get_frames( &self, stream_id: StreamId, since_sequence: Option<u64>, priority_filter: Option<Priority>, limit: Option<usize>, ) -> Self::GetFramesFuture<'_>
Retrieve frames for
stream_id honoring the optional filters. Read moreSource§fn delete_frames_for_stream(
&self,
stream_id: StreamId,
) -> Self::DeleteFramesForStreamFuture<'_>
fn delete_frames_for_stream( &self, stream_id: StreamId, ) -> Self::DeleteFramesForStreamFuture<'_>
Drop every frame stored for
stream_id. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for InMemoryFrameStore
impl !UnwindSafe for InMemoryFrameStore
impl Freeze for InMemoryFrameStore
impl Send for InMemoryFrameStore
impl Sync for InMemoryFrameStore
impl Unpin for InMemoryFrameStore
impl UnsafeUnpin for InMemoryFrameStore
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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 more