1use serde::{Deserialize, Serialize};
3use thiserror::Error;
4
5use crate::protocol::ClientError;
6
7#[derive(Error, Debug, PartialEq, Eq)]
10pub enum HandlerError {
11 #[error("object not found")]
12 ObjectNotFound,
13
14 #[error("message handler not found")]
15 HandlerNotFound,
16
17 #[error("message serialization error")]
18 MessageSerializationError,
19
20 #[error("response serialization error")]
21 ResponseSerializationError,
22
23 #[error("unknown execution error")]
24 Unknown,
25
26 #[error("error caused internally by the application")]
27 ApplicationError(Vec<u8>),
28}
29
30#[derive(Error, Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
34pub enum ServiceObjectLifeCycleError {
35 #[error("unknown error")]
36 Unknown,
37}
38
39#[derive(Error, Debug, PartialEq, Eq)]
42pub enum ClientBuilderError {
43 #[error("no MembershipStorage provided")]
44 NoMembershipStorage,
45}
46
47#[derive(Error, Debug, PartialEq, Eq)]
49pub enum ServerError {
50 #[error("bind")]
51 Bind(String),
52
53 #[error("client builder")]
54 ClientBuilder(ClientError),
55
56 #[error("cluster provider")]
57 ClusterProviderServe(ClusterProviderServeError),
58
59 #[error("Run")]
60 Run,
61}
62
63#[derive(Error, Debug, PartialEq, Eq)]
66pub enum MembershipError {
67 #[error("upstream error")]
68 Upstream(String),
69
70 #[error("unknown")]
71 Unknown(String),
72
73 #[error("This MembershipStorage is Read-only")]
74 ReadOnly(String),
75}
76
77#[cfg(feature = "sql")]
78impl From<sqlx::Error> for MembershipError {
79 fn from(err: sqlx::Error) -> Self {
80 MembershipError::Upstream(err.to_string())
81 }
82}
83
84#[derive(Error, Debug, PartialEq, Eq)]
87pub enum ClusterProviderServeError {
88 #[error("can't communicate with membership provider's storage")]
89 MembershipProviderError(String),
90
91 #[error("error pasing value into a SocketAddr")]
92 SocketAddrParsingError,
93
94 #[error("unknown cluster provider serve error")]
95 Unknown(String),
96}
97
98impl From<MembershipError> for ClusterProviderServeError {
99 fn from(err: MembershipError) -> Self {
100 ClusterProviderServeError::MembershipProviderError(err.to_string())
101 }
102}
103
104#[derive(Error, Debug, PartialEq)]
106pub enum LoadStateError {
107 #[error("object not found")]
108 ObjectNotFound,
109
110 #[error("unknown error")]
111 Unknown,
112
113 #[error("deserialization error")]
114 DeserializationError,
115
116 #[error("serialization error")]
117 SerializationError,
118}