use jsonrpsee::types::error::{ErrorObject, ErrorObjectOwned};
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("Client error: {}", .0)]
Client(#[from] Box<dyn std::error::Error + Send + Sync>),
#[error("Cannot resolve a block range ['{:?}' ... '{:?}]. {}", .from, .to, .details)]
InvalidBlockRange {
from: String,
to: String,
details: String,
},
#[error("count exceeds maximum value. value: {}, max: {}", .value, .max)]
InvalidCount {
value: u32,
max: u32,
},
#[error(transparent)]
UnsafeRpcCalled(#[from] crate::policy::UnsafeRpcError),
}
const BASE_ERROR: i32 = crate::error::base::STATE;
impl From<Error> for ErrorObjectOwned {
fn from(e: Error) -> ErrorObjectOwned {
match e {
Error::InvalidBlockRange { .. } => {
ErrorObject::owned(BASE_ERROR + 1, e.to_string(), None::<()>)
},
Error::InvalidCount { .. } => {
ErrorObject::owned(BASE_ERROR + 2, e.to_string(), None::<()>)
},
e => ErrorObject::owned(BASE_ERROR + 3, e.to_string(), None::<()>),
}
}
}