use std::error::Error;
#[derive(Debug)]
pub enum ApplyError {
InvalidTransaction(String),
InternalError(String),
}
impl Error for ApplyError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
None
}
}
impl std::fmt::Display for ApplyError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match *self {
ApplyError::InvalidTransaction(ref s) => write!(f, "InvalidTransaction: {}", s),
ApplyError::InternalError(ref s) => write!(f, "InternalError: {}", s),
}
}
}
#[derive(Debug)]
pub enum ContextError {
AuthorizationError(String),
ResponseAttributeError(String),
TransactionReceiptError(String),
SerializationError(Box<dyn Error>),
SendError(Box<dyn Error>),
ReceiveError(Box<dyn Error>),
}
impl Error for ContextError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
match self {
ContextError::AuthorizationError(_) => None,
ContextError::ResponseAttributeError(_) => None,
ContextError::TransactionReceiptError(_) => None,
ContextError::SerializationError(err) => Some(&**err),
ContextError::SendError(err) => Some(&**err),
ContextError::ReceiveError(err) => Some(&**err),
}
}
}
impl std::fmt::Display for ContextError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match *self {
ContextError::AuthorizationError(ref s) => write!(f, "AuthorizationError: {}", s),
ContextError::ResponseAttributeError(ref s) => {
write!(f, "ResponseAttributeError: {}", s)
}
ContextError::TransactionReceiptError(ref s) => {
write!(f, "TransactionReceiptError: {}", s)
}
ContextError::SerializationError(ref err) => write!(f, "SerializationError: {}", err),
ContextError::SendError(ref err) => write!(f, "SendError: {}", err),
ContextError::ReceiveError(ref err) => write!(f, "ReceiveError: {}", err),
}
}
}
impl From<ContextError> for ApplyError {
fn from(context_error: ContextError) -> Self {
match context_error {
ContextError::TransactionReceiptError(..) => {
ApplyError::InternalError(format!("{}", context_error))
}
_ => ApplyError::InvalidTransaction(format!("{}", context_error)),
}
}
}