over_there/core/client/
error.rs1use crate::core::Reply;
2use derive_more::Display;
3use serde::{Deserialize, Serialize};
4use std::error::Error;
5use std::io;
6
7#[derive(Serialize, Deserialize, Debug, Display, PartialEq, Eq)]
8pub enum SendError {
9 EncodingFailed,
10 SendFailed,
11}
12
13impl Error for SendError {}
14
15impl From<AskError> for Option<SendError> {
16 fn from(error: AskError) -> Self {
17 match error {
18 AskError::EncodingFailed => Some(SendError::EncodingFailed),
19 AskError::SendFailed => Some(SendError::SendFailed),
20 _ => None,
21 }
22 }
23}
24
25#[derive(Serialize, Deserialize, Debug, Display, PartialEq, Eq)]
26pub enum AskError {
27 #[display(fmt = "Failed: {}", msg)]
28 Failure {
29 msg: String,
30 },
31 #[display(fmt = "Invalid Response: {:?}", reply)]
32 InvalidResponse {
33 reply: Reply,
34 },
35 Timeout,
36 EncodingFailed,
37 SendFailed,
38 CallbackLost,
39}
40
41impl Error for AskError {}
42
43impl From<SendError> for AskError {
44 fn from(error: SendError) -> Self {
45 match error {
46 SendError::EncodingFailed => Self::EncodingFailed,
47 SendError::SendFailed => Self::SendFailed,
48 }
49 }
50}
51
52#[derive(Serialize, Deserialize, Debug, Display)]
53pub enum FileAskError {
54 #[display(fmt = "{}", "_0")]
55 GeneralAskFailed(AskError),
56
57 #[display(fmt = "IO Error: {}", "_0")]
58 #[serde(
59 serialize_with = "crate::utils::serializers::io_error::serialize",
60 deserialize_with = "crate::utils::serializers::io_error::deserialize"
61 )]
62 IoError(io::Error),
63
64 #[display(fmt = "File signature changed: {}", id)]
65 FileSignatureChanged { id: u32 },
66}
67
68impl Error for FileAskError {}
69
70impl From<AskError> for FileAskError {
71 fn from(error: AskError) -> Self {
72 Self::GeneralAskFailed(error)
73 }
74}
75
76impl From<io::Error> for FileAskError {
77 fn from(error: io::Error) -> Self {
78 Self::IoError(error)
79 }
80}
81
82#[derive(Debug, Display)]
83pub enum ExecAskError {
84 #[display(fmt = "{}", "_0")]
85 GeneralAskFailed(AskError),
86
87 #[display(fmt = "IO Error: {}", "_0")]
88 IoError(io::Error),
89
90 FailedToKill,
91}
92
93impl Error for ExecAskError {}
94
95impl From<AskError> for ExecAskError {
96 fn from(error: AskError) -> Self {
97 Self::GeneralAskFailed(error)
98 }
99}
100
101impl From<io::Error> for ExecAskError {
102 fn from(error: io::Error) -> Self {
103 Self::IoError(error)
104 }
105}