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}