1use microservices::rpc;
13use store_rpc::{FailureCode, Reply};
14
15#[derive(Clone, PartialEq, Eq, Debug, Display, Error, From)]
16#[display(doc_comments)]
17pub enum LaunchError {
18 #[from]
19 #[display(inner)]
20 Database(sled::Error),
21}
22
23impl microservices::error::Error for LaunchError {}
24
25#[derive(Clone, PartialEq, Eq, Debug, Display, Error, From)]
26#[display(doc_comments)]
27pub enum DaemonError {
28 #[from]
29 #[display(inner)]
30 Database(sled::Error),
31
32 UnknownTable(String),
34
35 #[from]
36 #[display(inner)]
37 Encoding(strict_encoding::Error),
38}
39
40impl microservices::error::Error for DaemonError {}
41
42impl From<DaemonError> for Reply {
43 fn from(err: DaemonError) -> Self {
44 let code = match err {
45 DaemonError::Database(_) => FailureCode::Database,
46 DaemonError::UnknownTable(_) => FailureCode::Database,
47 DaemonError::Encoding(_) => FailureCode::Encoding,
48 };
49 Reply::Failure(rpc::Failure {
50 code: code.into(),
51 info: err.to_string(),
52 })
53 }
54}