1use acton_reactive::ipc::IpcError;
4use thiserror::Error;
5
6#[derive(Debug, Error)]
8pub enum ClientError {
9 #[error("Failed to connect to engine: {0}")]
11 ConnectionFailed(String),
12
13 #[error("Engine socket not found at: {0}")]
15 SocketNotFound(String),
16
17 #[error("Communication error: {0}")]
19 IoError(#[from] std::io::Error),
20
21 #[error("IPC error: {0}")]
23 IpcError(String),
24
25 #[error("Serialization error: {0}")]
27 SerializationError(String),
28
29 #[error("Subscription failed: {0}")]
31 SubscriptionFailed(String),
32
33 #[error("Publish failed: {0}")]
35 PublishFailed(String),
36
37 #[error("Discovery failed: {0}")]
39 DiscoveryFailed(String),
40
41 #[error("Request timed out")]
43 Timeout,
44
45 #[error("Engine error: {0}")]
47 EngineError(String),
48
49 #[error("Protocol error: {0}")]
51 ProtocolError(String),
52}
53
54impl From<IpcError> for ClientError {
55 fn from(e: IpcError) -> Self {
56 ClientError::IpcError(e.to_string())
57 }
58}
59
60impl From<serde_json::Error> for ClientError {
61 fn from(e: serde_json::Error) -> Self {
62 ClientError::SerializationError(e.to_string())
63 }
64}
65
66impl From<rmp_serde::encode::Error> for ClientError {
67 fn from(e: rmp_serde::encode::Error) -> Self {
68 ClientError::SerializationError(e.to_string())
69 }
70}
71
72impl From<rmp_serde::decode::Error> for ClientError {
73 fn from(e: rmp_serde::decode::Error) -> Self {
74 ClientError::SerializationError(e.to_string())
75 }
76}