use signet_hot::ser::DeserError;
#[derive(Debug, thiserror::Error)]
pub enum MdbxColdError {
#[error("serialization error: {0}")]
Ser(#[from] DeserError),
#[error("mdbx error: {0}")]
Mdbx(#[from] signet_hot_mdbx::MdbxError),
#[error("database is read-only")]
ReadOnly,
#[error("too many logs: limit is {0}")]
TooManyLogs(usize),
#[error("mdbx read timed out after {0:?}")]
Timeout(std::time::Duration),
}
impl From<MdbxColdError> for signet_cold::ColdStorageError {
fn from(error: MdbxColdError) -> Self {
match error {
MdbxColdError::TooManyLogs(limit) => Self::TooManyLogs { limit },
MdbxColdError::Timeout(duration) => Self::DeadlineExceeded(duration),
other => Self::Backend(Box::new(other)),
}
}
}