use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum FirewallError {
MissingRegistryCellDep,
InvalidRegistryData,
RegistryNotSorted,
BlacklistedLockArgs,
BlacklistedTypeArgs,
AmbiguousRegistryCellDep,
}
impl FirewallError {
pub fn code(&self) -> i8 {
match self {
FirewallError::MissingRegistryCellDep => error_codes::MISSING_REGISTRY_CELL_DEP,
FirewallError::InvalidRegistryData => error_codes::INVALID_REGISTRY_DATA,
FirewallError::RegistryNotSorted => error_codes::REGISTRY_NOT_SORTED,
FirewallError::BlacklistedLockArgs => error_codes::BLACKLISTED_LOCK_ARGS,
FirewallError::BlacklistedTypeArgs => error_codes::BLACKLISTED_TYPE_ARGS,
FirewallError::AmbiguousRegistryCellDep => error_codes::AMBIGUOUS_REGISTRY_CELL_DEP,
}
}
}
impl fmt::Display for FirewallError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
FirewallError::MissingRegistryCellDep => {
write!(f, "missing registry cell dep (code {})", self.code())
}
FirewallError::InvalidRegistryData => {
write!(f, "invalid registry data (code {})", self.code())
}
FirewallError::RegistryNotSorted => {
write!(f, "registry entries not sorted (code {})", self.code())
}
FirewallError::BlacklistedLockArgs => {
write!(f, "blacklisted lock args (code {})", self.code())
}
FirewallError::BlacklistedTypeArgs => {
write!(f, "blacklisted type args (code {})", self.code())
}
FirewallError::AmbiguousRegistryCellDep => {
write!(f, "ambiguous registry cell dep (code {})", self.code())
}
}
}
}
impl std::error::Error for FirewallError {}
pub mod error_codes {
pub const INVALID_ARGS_LAYOUT: i8 = 5;
pub const UNSUPPORTED_VERSION: i8 = 6;
pub const UNSUPPORTED_FLAGS: i8 = 7;
pub const MISSING_REGISTRY_CELL_DEP: i8 = 8;
pub const INVALID_REGISTRY_DATA: i8 = 9;
pub const REGISTRY_NOT_SORTED: i8 = 10;
pub const BLACKLISTED_LOCK_ARGS: i8 = 11;
pub const BLACKLISTED_TYPE_ARGS: i8 = 12;
pub const MISSING_INNER_LOCK_CELL_DEP: i8 = 13;
pub const INVALID_INNER_LOCK_SCRIPT: i8 = 14;
pub const INNER_LOCK_REJECTED: i8 = 15;
pub const OUTPUT_SCRIPT_PARSE_FAILED: i8 = 16;
pub const AMBIGUOUS_REGISTRY_CELL_DEP: i8 = 17;
}