sc_rpc_spec_v2/chain_head/
error.rs1use jsonrpsee::types::error::ErrorObject;
22
23#[derive(Debug, thiserror::Error)]
25pub enum Error {
26 #[error("Maximum number of chainHead_follow has been reached")]
28 ReachedLimits,
29 #[error("Invalid block hash")]
31 InvalidBlock,
32 #[error("The `chainHead_follow` subscription was started with `withRuntime` set to `false`")]
34 InvalidRuntimeCall(String),
35 #[error("Wait for continue event was not generated for the subscription")]
37 InvalidContinue,
38 #[error("Received duplicate hashes for the `chainHead_unpin` method")]
40 InvalidDuplicateHashes,
41 #[error("Invalid parameter: {0}")]
43 InvalidParam(String),
44 #[error("Internal error: {0}")]
46 InternalError(String),
47}
48
49pub mod rpc_spec_v2 {
52 pub const REACHED_LIMITS: i32 = -32800;
54 pub const INVALID_BLOCK_ERROR: i32 = -32801;
56 pub const INVALID_RUNTIME_CALL: i32 = -32802;
58 pub const INVALID_CONTINUE: i32 = -32803;
60 pub const INVALID_DUPLICATE_HASHES: i32 = -32804;
62}
63
64pub mod json_rpc_spec {
67 pub const INVALID_PARAM_ERROR: i32 = -32602;
69 pub const INTERNAL_ERROR: i32 = -32603;
71}
72
73impl From<Error> for ErrorObject<'static> {
74 fn from(e: Error) -> Self {
75 let msg = e.to_string();
76
77 match e {
78 Error::ReachedLimits =>
79 ErrorObject::owned(rpc_spec_v2::REACHED_LIMITS, msg, None::<()>),
80 Error::InvalidBlock =>
81 ErrorObject::owned(rpc_spec_v2::INVALID_BLOCK_ERROR, msg, None::<()>),
82 Error::InvalidRuntimeCall(_) =>
83 ErrorObject::owned(rpc_spec_v2::INVALID_RUNTIME_CALL, msg, None::<()>),
84 Error::InvalidContinue =>
85 ErrorObject::owned(rpc_spec_v2::INVALID_CONTINUE, msg, None::<()>),
86 Error::InvalidDuplicateHashes =>
87 ErrorObject::owned(rpc_spec_v2::INVALID_DUPLICATE_HASHES, msg, None::<()>),
88 Error::InvalidParam(_) =>
89 ErrorObject::owned(json_rpc_spec::INVALID_PARAM_ERROR, msg, None::<()>),
90 Error::InternalError(_) =>
91 ErrorObject::owned(json_rpc_spec::INTERNAL_ERROR, msg, None::<()>),
92 }
93 }
94}