soil_rpc/v2/archive/
error.rs1use jsonrpsee::types::error::ErrorObject;
10
11#[derive(Debug, thiserror::Error)]
13pub enum Error {
14 #[error("Invalid parameter: {0}")]
16 InvalidParam(String),
17 #[error("Runtime call: {0}")]
19 RuntimeCall(String),
20 #[error("Failed to fetch leaves of the chain: {0}")]
22 FetchLeaves(String),
23}
24
25const BASE_ERROR: i32 = 3000;
27const INVALID_PARAM_ERROR: i32 = BASE_ERROR + 1;
29const RUNTIME_CALL_ERROR: i32 = BASE_ERROR + 2;
31const FETCH_LEAVES_ERROR: i32 = BASE_ERROR + 3;
33
34impl From<Error> for ErrorObject<'static> {
35 fn from(e: Error) -> Self {
36 let msg = e.to_string();
37
38 match e {
39 Error::InvalidParam(_) => ErrorObject::owned(INVALID_PARAM_ERROR, msg, None::<()>),
40 Error::RuntimeCall(_) => ErrorObject::owned(RUNTIME_CALL_ERROR, msg, None::<()>),
41 Error::FetchLeaves(_) => ErrorObject::owned(FETCH_LEAVES_ERROR, msg, None::<()>),
42 }
43 .into()
44 }
45}
46
47pub enum Infallible {}
50
51impl From<Infallible> for ErrorObject<'static> {
52 fn from(e: Infallible) -> Self {
53 match e {}
54 }
55}