pub mod chunking;
pub mod entry;
pub mod header;
pub mod reader;
pub mod snapshot;
pub mod storage;
pub mod wal;
pub mod writer;
pub use chunking::{ChunkedWriter, MIN_CHUNK_SIZE};
pub use header::{
FileHeader, Flags, HeaderError, MetadataHeaderError, MetadataSectionHeader, FORMAT_JSON,
FORMAT_POSTCARD, MAGIC, METADATA_MAGIC, METADATA_VERSION, VERSION_MAJOR, VERSION_MINOR,
VERSION_MINOR_MIN,
};
pub use reader::{read_file_header, read_index_header};
pub use snapshot::{read_snapshot, write_snapshot};
pub use storage::{MemoryBackend, StorageBackend};
pub use writer::write_empty_index;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum PersistenceError {
#[error("io error: {0}")]
Io(#[from] std::io::Error),
#[error("buffer too small: expected {expected}, got {actual}")]
BufferTooSmall {
expected: usize,
actual: usize,
},
#[error("invalid magic number: expected {expected:?}, got {actual:?}")]
InvalidMagic {
expected: [u8; 4],
actual: [u8; 4],
},
#[error("unsupported version: {0}.{1}")]
UnsupportedVersion(u8, u8),
#[error("checksum mismatch: expected {expected:#x}, got {actual:#x}")]
ChecksumMismatch {
expected: u32,
actual: u32,
},
#[error("header error: {0}")]
Header(#[from] HeaderError),
#[error("corrupted data: {0}")]
Corrupted(String),
#[error("unsupported: {0}")]
Unsupported(String),
#[error("not initialized")]
NotInitialized,
#[error("truncated data: expected more bytes")]
TruncatedData,
#[error("serialization error: {0}")]
SerializationError(String),
#[error("deserialization error: {0}")]
DeserializationError(String),
}