Trait RecordFormat

Source
pub trait RecordFormat: Send + Sync {
    // Required methods
    fn record_header_size(&self, key_len: usize) -> usize;
    fn total_size(&self, key_len: usize, value_len: usize) -> usize;
    fn serialize_record(&self, record: &Record, include_value: bool) -> Vec<u8> ;
    fn parse_record(&self, data: &[u8]) -> Option<(Vec<u8>, usize, u64, u64)>;
    fn value_offset(&self, key_len: usize) -> usize;
}
Expand description

Trait for handling different record format versions

Required Methods§

Source

fn record_header_size(&self, key_len: usize) -> usize

Calculate the size of a record on disk (excluding value)

Source

fn total_size(&self, key_len: usize, value_len: usize) -> usize

Calculate total size including value

Source

fn serialize_record(&self, record: &Record, include_value: bool) -> Vec<u8>

Serialize a record to bytes for disk storage

Source

fn parse_record(&self, data: &[u8]) -> Option<(Vec<u8>, usize, u64, u64)>

Parse a record from disk bytes (returns key, value_len, timestamp, ttl_expiry)

Source

fn value_offset(&self, key_len: usize) -> usize

Get the offset where value data starts in the serialized format

Implementors§