Skip to main content

hadb_changeset/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum ChangesetError {
5    #[error("invalid magic bytes")]
6    InvalidMagic,
7
8    #[error("unsupported version: {0}")]
9    UnsupportedVersion(u8),
10
11    #[error("checksum mismatch: expected {expected:#018x}, got {actual:#018x}")]
12    ChecksumMismatch { expected: u64, actual: u64 },
13
14    #[error("chain broken: changeset prev_checksum {changeset_prev:#018x} does not match expected {expected:#018x}")]
15    ChainBroken { expected: u64, changeset_prev: u64 },
16
17    #[error("size mismatch: expected {needed} bytes, have {available}")]
18    Truncated { needed: usize, available: usize },
19
20    #[error("page data length {data_len} exceeds page size {page_size}")]
21    PageTooLarge { data_len: u32, page_size: u32 },
22
23    #[error("invalid page_id_size: {0} (expected 4 or 8)")]
24    InvalidPageIdSize(u8),
25
26    #[error("page_size mismatch: header says {header}, expected {expected}")]
27    PageSizeMismatch { header: u32, expected: u32 },
28
29    #[error("invalid flags: {0:#04x}")]
30    InvalidFlags(u8),
31
32    #[error(transparent)]
33    Io(#[from] std::io::Error),
34}