1use std::error::Error;
2
3use anyerror::AnyError;
4
5#[derive(serde::Serialize, serde::Deserialize, Clone)]
6pub enum Infallible {}
7
8#[derive(thiserror::Error, Debug)]
9pub enum ZrpcError<E = Infallible> {
10 #[error("connection error: {0}")]
11 ConnectionError(#[from] Box<dyn Error + Send + Sync>),
12 #[error("encode error: {0}")]
13 EncodeError(AnyError),
14 #[error("decode error: {0}")]
15 DecodeError(AnyError),
16 #[error("server error: {0}")]
17 ServerSystemError(ZrpcSystemError),
18 #[error("No quaryable target (sender dropped)")]
19 SenderDropped(#[from] flume::RecvError),
20 #[error("app error: {0}")]
21 AppError(E),
22}
23
24#[derive(
25 thiserror::Error, serde::Serialize, serde::Deserialize, Clone, Debug,
26)]
27pub enum ZrpcServerError<E> {
28 #[error("app error: {0}")]
29 AppError(E),
30 #[error("system error: {0}")]
31 SystemError(ZrpcSystemError),
32}
33
34#[derive(
35 thiserror::Error, serde::Serialize, serde::Deserialize, Clone, Debug,
36)]
37pub enum ZrpcSystemError {
38 #[error("decode error: {0}")]
39 DecodeError(anyerror::AnyError),
40 #[error("encode error: {0}")]
41 EncodeError(anyerror::AnyError),
42}