coralstack_cmd_ipc/
error.rs1use serde::{Deserialize, Serialize};
9
10#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
14#[serde(rename_all = "snake_case")]
15pub enum RegisterErrorCode {
16 DuplicateCommand,
17}
18
19#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
23#[serde(rename_all = "snake_case")]
24pub enum ExecuteErrorCode {
25 NotFound,
26 InvalidRequest,
27 InternalError,
28 Timeout,
29 ChannelDisconnected,
30}
31
32#[derive(thiserror::Error, Debug)]
34pub enum CommandError {
35 #[error("invalid message: {0}")]
36 InvalidMessage(String),
37
38 #[error("duplicate command registration: {0}")]
39 DuplicateCommand(String),
40
41 #[error("command not found: {0}")]
42 NotFound(String),
43
44 #[error("invalid request for command {command_id}: {message}")]
45 InvalidRequest { command_id: String, message: String },
46
47 #[error("internal error executing command {command_id}: {message}")]
48 Internal { command_id: String, message: String },
49
50 #[error("request timed out")]
51 Timeout,
52
53 #[error("channel disconnected")]
54 ChannelDisconnected,
55
56 #[error("serialization error: {0}")]
57 Serde(#[from] serde_json::Error),
58}
59
60#[derive(thiserror::Error, Debug)]
62pub enum ChannelError {
63 #[error("channel already closed")]
64 Closed,
65
66 #[error("channel send failed: {0}")]
67 Send(String),
68
69 #[error("channel error: {0}")]
70 Other(String),
71}