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 new stream 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 data to a 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 multiple messages atomically Read more
Source§fn read(&self, name: &str, from_offset: &Offset) -> Result<ReadResult>
fn read(&self, name: &str, from_offset: &Offset) -> Result<ReadResult>
Read messages from a stream starting at offset 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 messages with producer sequencing (atomic validation + append) 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 with optional initial data and close. 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