pub struct AcidStorage { /* private fields */ }Implementations§
Source§impl AcidStorage
impl AcidStorage
Sourcepub fn new(
root_dir: impl Into<PathBuf>,
shard_count: usize,
max_total_bytes: u64,
max_stream_bytes: u64,
backend: AcidBackend,
) -> Result<Self>
pub fn new( root_dir: impl Into<PathBuf>, shard_count: usize, max_total_bytes: u64, max_stream_bytes: u64, backend: AcidBackend, ) -> Result<Self>
Create or reopen an ACID storage root.
When backend is AcidBackend::File the backend stores its files
beneath <root>/acid, validates a layout manifest, and rebuilds
aggregate state from disk before serving requests.
When backend is AcidBackend::InMemory the root_dir is ignored
and each shard uses a redb InMemoryBackend. ACID transaction
semantics still apply but all data is lost on shutdown.
§Errors
Returns Error::Storage if storage layout validation fails, shard
databases cannot be opened, or on-disk recovery cannot complete.
Sourcepub fn total_bytes(&self) -> u64
pub fn total_bytes(&self) -> u64
Return the currently tracked total payload bytes across all streams.
Trait Implementations§
Source§impl Storage for AcidStorage
impl Storage for AcidStorage
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 AcidStorage
impl !RefUnwindSafe for AcidStorage
impl Send for AcidStorage
impl Sync for AcidStorage
impl Unpin for AcidStorage
impl UnsafeUnpin for AcidStorage
impl !UnwindSafe for AcidStorage
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