#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("Protocol error: {0}")]
ProtocolError(String),
#[error("JSON-RPC error: code={code}, message={message}")]
RpcError { code: i32, message: String },
#[error("Protocol error: {0}")]
ParseError(#[from] serde_json::Error),
#[error("Invalid Request: {0}")]
InvalidRequest(String),
}
impl Error {
pub fn protocol(message: impl Into<String>) -> Self {
Self::ProtocolError(message.into())
}
pub fn rpc(code: i32, message: impl Into<String>) -> Self {
Self::RpcError {
code,
message: message.into(),
}
}
pub fn invalid_request(message: impl Into<String>) -> Self {
Self::InvalidRequest(message.into())
}
}