Expand description
Durable bounded queue backed by zstd-compressed CBOR segment files.
Items are accumulated in memory, flushed as zstd-compressed CBOR batches
to seg_{start:012}_{end:012}.zst files, and deleted once the consumer
acknowledges receipt via SegmentBuffer::delete_acked.
The buffer is generic over any T: Serialize + DeserializeOwned + Clone + Send + 'static.
Crash recovery is filename-based: scanning the directory rebuilds head_seq
and next_seq without any WAL or metadata database.
§Example
use segment_buffer::{SegmentBuffer, SegmentConfig};
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Clone)]
struct MyItem { id: u64 }
let buffer = SegmentBuffer::<MyItem>::open("/tmp/my-queue", SegmentConfig::default())?;
let seq = buffer.append(MyItem { id: 1 })?;
let items = buffer.read_from(0, 100)?;Structs§
- Buffer
Stats - Point-in-time snapshot of buffer state, captured atomically under a single lock acquisition so all fields are mutually consistent.
- Cipher
Error - Error returned by
SegmentCipherimplementations. - Segment
Buffer - Durable bounded queue of
Tbacked by compressed segment files. - Segment
Config - Configuration knobs for
SegmentBuffer.
Enums§
- Segment
Error - Errors produced by segment-buffer operations.
Traits§
- Segment
Cipher - Encrypts and decrypts segment file payloads.
Type Aliases§
- Result
- Result alias used throughout the crate.