Skip to main content

fwob_v1/
lib.rs

1mod core_api;
2mod editor;
3mod header;
4mod metadata;
5mod mutation;
6mod reader;
7mod verifier;
8mod writer;
9
10pub use core_api::{
11    create_writer as create_core_writer, open_reader as open_core_reader,
12    open_writer as open_core_writer, MaintenanceService,
13};
14pub use editor::InMemoryEditor;
15pub use header::{Header, HEADER_LEN, SIGNATURE, VERSION};
16pub use metadata::update_metadata;
17pub use mutation::delete_frame_ranges;
18pub use reader::Reader;
19pub use verifier::{repair_committed_tail, verify_file, VerificationReport};
20pub use writer::{Writer, WriterOptions};
21
22use thiserror::Error;
23
24pub type Result<T> = std::result::Result<T, V1Error>;
25
26#[derive(Debug, Error)]
27pub enum V1Error {
28    #[error("corrupted FWOB v1 header")]
29    CorruptedHeader,
30
31    #[error("frame type mismatch: expected {expected}, found {actual}")]
32    FrameTypeMismatch { expected: String, actual: String },
33
34    #[error("corrupted file length: expected {expected}, actual {actual}")]
35    CorruptedFileLength { expected: u64, actual: u64 },
36
37    #[error("corrupted string table length: expected {expected}, actual {actual}")]
38    CorruptedStringTableLength { expected: u32, actual: u64 },
39
40    #[error("key order violation at frame {index}")]
41    KeyOrderViolation { index: u64 },
42
43    #[error("key field index {0} is out of range")]
44    KeyFieldIndexOutOfRange(usize),
45
46    #[error("string table out of space: required {required}, preserved {preserved}")]
47    StringTableOutOfSpace { required: u32, preserved: u32 },
48
49    #[error("FWOB core error: {0}")]
50    Core(#[from] fwob_core::FwobError),
51
52    #[error("I/O error: {0}")]
53    Io(#[from] std::io::Error),
54}