Packages
ferricstore
0.11.12
0.11.12
0.11.11
0.11.10
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.2.0
0.1.0
FerricFlow durable workflows and queues with native-protocol storage, Raft durability, and Bitcask persistence.
Current section
Files
Jump to
Current section
Files
native/ferricstore_bitcask/src/log.rs
//! Append-only log file for Bitcask.
//!
//! On-disk record format (little-endian):
//!
//! ```text
//! [ crc32: u32 | timestamp_ms: u64 | expire_at_ms: u64 | key_size: u16 | value_size: u32 | key: [u8] | value: [u8] ]
//! ```
//!
//! A tombstone record has `value_size = u32::MAX` and no value bytes. Zero is
//! reserved for a live empty value, so the two states remain unambiguous.
//!
//! The CRC32 covers everything after the checksum field:
//! `timestamp_ms || expire_at_ms || key_size || value_size || key || value`
include!("sections/log_part_01.rs");
include!("sections/log_part_02.rs");
include!("sections/log_part_03.rs");
#[cfg(test)]
mod tests {
include!("sections/log_tests_part_01.rs");
include!("sections/log_tests_part_02.rs");
include!("sections/log_tests_part_03.rs");
}