Skip to main content

RecordFormat

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;

    // Provided method
    fn serialize_record_into(
        &self,
        record: &Record,
        include_value: bool,
        data: &mut Vec<u8>,
    ) { ... }
}
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

Provided Methods§

Source

fn serialize_record_into( &self, record: &Record, include_value: bool, data: &mut Vec<u8>, )

Append a serialized record without its sector header.

Implementors§