llm_incident_manager/messaging/
error.rs

1//! Error types for messaging operations
2
3use crate::error::AppError;
4
5/// Result type for messaging operations
6pub type MessagingResult<T> = std::result::Result<T, MessagingError>;
7
8/// Errors that can occur during messaging operations
9#[derive(Debug, thiserror::Error)]
10pub enum MessagingError {
11    /// Connection failed
12    #[error("Connection failed: {0}")]
13    ConnectionFailed(String),
14
15    /// Publish failed
16    #[error("Publish failed: {0}")]
17    PublishFailed(String),
18
19    /// Subscribe failed
20    #[error("Subscribe failed: {0}")]
21    SubscribeFailed(String),
22
23    /// Consume failed
24    #[error("Consume failed: {0}")]
25    ConsumeFailed(String),
26
27    /// Serialization error
28    #[error("Serialization error: {0}")]
29    SerializationError(String),
30
31    /// Deserialization error
32    #[error("Deserialization error: {0}")]
33    DeserializationError(String),
34
35    /// Configuration error
36    #[error("Configuration error: {0}")]
37    ConfigurationError(String),
38
39    /// Backend not available
40    #[error("Backend not available: {0}")]
41    BackendUnavailable(String),
42
43    /// Timeout error
44    #[error("Operation timed out: {0}")]
45    Timeout(String),
46
47    /// Invalid message format
48    #[error("Invalid message format: {0}")]
49    InvalidMessage(String),
50}
51
52impl From<serde_json::Error> for MessagingError {
53    fn from(err: serde_json::Error) -> Self {
54        MessagingError::SerializationError(err.to_string())
55    }
56}
57
58impl From<MessagingError> for AppError {
59    fn from(err: MessagingError) -> Self {
60        match err {
61            MessagingError::ConfigurationError(msg) => AppError::Configuration(msg),
62            _ => AppError::Internal(err.to_string()),
63        }
64    }
65}