1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum LinkError {
5 #[error("Serialization error: {0}")]
6 Serialization(String),
7
8 #[error("Deserialization error: {0}")]
9 Deserialization(String),
10
11 #[error("Transport error: {0}")]
12 Transport(String),
13
14 #[error("Schema mismatch: expected version {expected}, got {actual}")]
15 SchemaMismatch { expected: String, actual: String },
16
17 #[error("Component schema not found: {0}")]
18 SchemaNotFound(String),
19
20 #[error("Rate limit exceeded: {0}")]
21 RateLimitExceeded(String),
22
23 #[error("Invalid message format: {0}")]
24 InvalidMessage(String),
25
26 #[error("IO error: {0}")]
27 Io(#[from] std::io::Error),
28
29 #[error("JSON error: {0}")]
30 Json(#[from] serde_json::Error),
31
32 #[error("MessagePack encode error: {0}")]
33 MsgPackEncode(#[from] rmp_serde::encode::Error),
34
35 #[error("MessagePack decode error: {0}")]
36 MsgPackDecode(#[from] rmp_serde::decode::Error),
37
38 #[error("Bincode error: {0}")]
39 Bincode(#[from] bincode::Error),
40
41 #[error("Connection closed")]
42 ConnectionClosed,
43
44 #[error("Timeout")]
45 Timeout,
46
47 #[error("Unknown error: {0}")]
48 Unknown(String),
49}
50
51pub type Result<T> = std::result::Result<T, LinkError>;