#[derive(Debug, thiserror::Error)]
pub enum BootnodeError {
#[error("snapshot too stale: age {age_secs}s exceeds max {max_allowed}s")]
SnapshotTooStale {
age_secs: u64,
max_allowed: u64,
},
#[error("unsupported snapshot format version: {0}")]
UnsupportedSnapshotFormat(u8),
#[error("unsupported delta format version: {0}")]
UnsupportedDeltaFormat(u8),
#[error("io: {0}")]
Io(#[from] std::io::Error),
#[error("redb: {0}")]
Database(#[from] redb::DatabaseError),
#[error("redb table: {0}")]
Table(#[from] redb::TableError),
#[error("redb transaction: {0}")]
Transaction(Box<redb::TransactionError>),
#[error("redb storage: {0}")]
Storage(#[from] redb::StorageError),
#[error("redb commit: {0}")]
Commit(#[from] redb::CommitError),
#[error("serialize: {0}")]
SerializeFailed(#[source] rmp_serde::encode::Error),
#[error("deserialize: {0}")]
DeserializeFailed(#[source] rmp_serde::decode::Error),
#[error("invalid DaCert data: {0}")]
InvalidCertData(String),
#[error("snapshot body too large: {size} bytes exceeds max {max} bytes")]
SnapshotBodyTooLarge {
size: usize,
max: usize,
},
#[error("snapshot body_len mismatch: header says {header_body_len}, actual {actual}")]
SnapshotBodyLenMismatch {
header_body_len: u64,
actual: u64,
},
#[error("delta field `{field}` too large: {size} bytes exceeds max {max} bytes")]
DeltaFieldTooLarge {
field: &'static str,
size: usize,
max: usize,
},
#[error("fetch_range too large: requested {requested} entries exceeds max {max}")]
FetchRangeTooLarge {
requested: u64,
max: u64,
},
}
impl From<redb::TransactionError> for BootnodeError {
fn from(e: redb::TransactionError) -> Self {
Self::Transaction(Box::new(e))
}
}
impl From<rmp_serde::encode::Error> for BootnodeError {
fn from(e: rmp_serde::encode::Error) -> Self {
Self::SerializeFailed(e)
}
}
impl From<rmp_serde::decode::Error> for BootnodeError {
fn from(e: rmp_serde::decode::Error) -> Self {
Self::DeserializeFailed(e)
}
}