pub struct InMemoryStorage { /* private fields */ }Expand description
In-memory storage implementation
Thread-safe storage with:
RwLock<HashMap>for stream lookup (concurrent reads)- Per-stream
RwLockfor exclusive write access (offset monotonicity) - Memory limit enforcement (global and per-stream)
§Concurrency Model
Multiple readers can access different streams concurrently.
Appends to the same stream are serialized via RwLock::write().
Appends to different streams can proceed concurrently.
Implementations§
Trait Implementations§
Source§impl Storage for InMemoryStorage
impl Storage for InMemoryStorage
Source§fn create_stream(
&self,
name: &str,
config: StreamConfig,
) -> Result<CreateStreamResult>
fn create_stream( &self, name: &str, config: StreamConfig, ) -> Result<CreateStreamResult>
Create a stream entry with immutable configuration. Read more
Source§fn append(&self, name: &str, data: Bytes, content_type: &str) -> Result<Offset>
fn append(&self, name: &str, data: Bytes, content_type: &str) -> Result<Offset>
Append one message to an existing stream. Read more
Source§fn batch_append(
&self,
name: &str,
messages: Vec<Bytes>,
content_type: &str,
seq: Option<&str>,
) -> Result<Offset>
fn batch_append( &self, name: &str, messages: Vec<Bytes>, content_type: &str, seq: Option<&str>, ) -> Result<Offset>
Append a batch of messages as one atomic operation. Read more
Source§fn read(&self, name: &str, from_offset: &Offset) -> Result<ReadResult>
fn read(&self, name: &str, from_offset: &Offset) -> Result<ReadResult>
Read from a stream starting at
from_offset. Read moreSource§fn delete(&self, name: &str) -> Result<()>
fn delete(&self, name: &str) -> Result<()>
Delete a stream and all of its persisted data. Read more
Source§fn head(&self, name: &str) -> Result<StreamMetadata>
fn head(&self, name: &str) -> Result<StreamMetadata>
Return stream metadata without reading message bodies. Read more
Source§fn close_stream(&self, name: &str) -> Result<()>
fn close_stream(&self, name: &str) -> Result<()>
Mark a stream closed so future appends are rejected. Read more
Source§fn append_with_producer(
&self,
name: &str,
messages: Vec<Bytes>,
content_type: &str,
producer: &ProducerHeaders,
should_close: bool,
seq: Option<&str>,
) -> Result<ProducerAppendResult>
fn append_with_producer( &self, name: &str, messages: Vec<Bytes>, content_type: &str, producer: &ProducerHeaders, should_close: bool, seq: Option<&str>, ) -> Result<ProducerAppendResult>
Append with idempotent producer sequencing. Read more
Source§fn create_stream_with_data(
&self,
name: &str,
config: StreamConfig,
messages: Vec<Bytes>,
should_close: bool,
) -> Result<CreateWithDataResult>
fn create_stream_with_data( &self, name: &str, config: StreamConfig, messages: Vec<Bytes>, should_close: bool, ) -> Result<CreateWithDataResult>
Atomically create a stream, optionally seed it with data, and optionally close it. Read more
Source§fn subscribe(&self, name: &str) -> Option<Receiver<()>>
fn subscribe(&self, name: &str) -> Option<Receiver<()>>
Subscribe to notifications for new data on a stream. Read more
Source§fn cleanup_expired_streams(&self) -> usize
fn cleanup_expired_streams(&self) -> usize
Proactively remove all expired streams, returning the count deleted. Read more
Auto Trait Implementations§
impl !Freeze for InMemoryStorage
impl RefUnwindSafe for InMemoryStorage
impl Send for InMemoryStorage
impl Sync for InMemoryStorage
impl Unpin for InMemoryStorage
impl UnsafeUnpin for InMemoryStorage
impl UnwindSafe for InMemoryStorage
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