Skip to main content

fwob_v2/
lib.rs

1mod codec;
2mod core_api;
3mod encoding;
4mod file_header;
5mod page;
6mod reader;
7mod repair;
8mod writer;
9
10pub use codec::Codec;
11pub use core_api::{
12    create_writer as create_core_writer, open_reader as open_core_reader,
13    open_writer as open_core_writer, MaintenanceService,
14};
15pub use encoding::{decode_page_payload, encode_page_payload};
16pub use file_header::{
17    update_counts, update_metadata, FileHeader, FILE_HEADER_LEN, MAGIC, MAX_PAGE_SIZE,
18    MIN_PAGE_SIZE, VERSION,
19};
20pub use page::{Encoding, PageHeader, PAGE_HEADER_LEN};
21pub use reader::Reader;
22pub use repair::repair_committed_tail;
23pub use writer::{
24    CodecSelection, EncodingSelection, PackingStats, PagePacking, Writer, WriterOptions,
25    DEFAULT_CODEC, DEFAULT_ENCODING, DEFAULT_PAGE_PACKING, DEFAULT_PAGE_SIZE, DEFAULT_ZSTD_LEVEL,
26};
27
28use thiserror::Error;
29
30pub type Result<T> = std::result::Result<T, V2Error>;
31
32#[derive(Debug, Error)]
33pub enum V2Error {
34    #[error("invalid FWOB v2 file header")]
35    InvalidFileHeader,
36
37    #[error("invalid FWOB v2 page header at page {0}")]
38    InvalidPageHeader(u64),
39
40    #[error("unsupported codec {0}")]
41    UnsupportedCodec(u8),
42
43    #[error("unsupported encoding {0}")]
44    UnsupportedEncoding(u8),
45
46    #[error("page payload exceeds page capacity: compressed {compressed}, capacity {capacity}")]
47    PageOverflow { compressed: usize, capacity: usize },
48
49    #[error("frame does not fit into an empty page")]
50    FrameTooLarge,
51
52    #[error("key order violation")]
53    KeyOrderViolation,
54
55    #[error("checksum mismatch")]
56    ChecksumMismatch,
57
58    #[error("FWOB core error: {0}")]
59    Core(#[from] fwob_core::FwobError),
60
61    #[error("I/O error: {0}")]
62    Io(#[from] std::io::Error),
63}