sc_consensus_grandpa_rpc/
error.rs1use jsonrpsee::types::error::{ErrorObject, ErrorObjectOwned};
20
21#[derive(Debug, thiserror::Error)]
22pub enum Error {
24 #[error("GRANDPA RPC endpoint not ready")]
26 EndpointNotReady,
27 #[error("GRANDPA reports authority set id unreasonably large")]
29 AuthoritySetIdReportedAsUnreasonablyLarge,
30 #[error("GRANDPA reports voter state as unreasonably large")]
32 VoterStateReportsUnreasonablyLargeNumbers,
33 #[error("GRANDPA prove finality rpc failed: {0}")]
35 ProveFinalityFailed(#[from] sc_consensus_grandpa::FinalityProofError),
36}
37
38pub enum ErrorCode {
40 NotReady = 1,
42 AuthoritySetTooLarge,
44 VoterStateTooLarge,
46 ProveFinality,
48}
49
50impl From<Error> for ErrorCode {
51 fn from(error: Error) -> Self {
52 match error {
53 Error::EndpointNotReady => ErrorCode::NotReady,
54 Error::AuthoritySetIdReportedAsUnreasonablyLarge => ErrorCode::AuthoritySetTooLarge,
55 Error::VoterStateReportsUnreasonablyLargeNumbers => ErrorCode::VoterStateTooLarge,
56 Error::ProveFinalityFailed(_) => ErrorCode::ProveFinality,
57 }
58 }
59}
60
61impl From<Error> for ErrorObjectOwned {
62 fn from(error: Error) -> Self {
63 let message = error.to_string();
64 let code = ErrorCode::from(error);
65 ErrorObject::owned(code as i32, message, None::<()>)
66 }
67}
68
69impl From<std::num::TryFromIntError> for Error {
70 fn from(_error: std::num::TryFromIntError) -> Self {
71 Error::VoterStateReportsUnreasonablyLargeNumbers
72 }
73}