use std::error::Error as StdError;
use std::fmt;
#[derive(Debug)]
pub enum SwitchboardCommonError {
CustomMessage(String),
CustomError {
message: String,
source: Box<dyn StdError + 'static>,
},
SgxError,
SgxWriteError,
TxFailure,
NetworkErr,
InvalidQuoteError,
TxCompileErr,
EnvVariableMissing(String),
}
impl StdError for SwitchboardCommonError {
fn source(&self) -> Option<&(dyn StdError + 'static)> {
match self {
SwitchboardCommonError::CustomError { source, .. } => Some(source.as_ref()), _ => None,
}
}
}
impl fmt::Display for SwitchboardCommonError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
SwitchboardCommonError::CustomMessage(message) => {
write!(f, "error: {}", message.as_str())
}
SwitchboardCommonError::CustomError {
message, source, ..
} => write!(f, "error: {} - {:?}", message.as_str(), source),
SwitchboardCommonError::SgxError => write!(f, "SGX error"),
SwitchboardCommonError::SgxWriteError => write!(f, "SGX write error"),
SwitchboardCommonError::TxFailure => write!(f, "Tx failure"),
SwitchboardCommonError::NetworkErr => write!(f, "Network error"),
SwitchboardCommonError::InvalidQuoteError => write!(f, "Invalid Quote"),
SwitchboardCommonError::TxCompileErr => write!(f, "Tx compile error"),
SwitchboardCommonError::EnvVariableMissing(message) => {
write!(f, "Env variable missing {}", message.as_str())
}
}
}
}