use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("Listener '{listener}' failed: {message}")]
ListenerFailed {
listener: String,
message: String,
},
#[error("Failed to dispatch event '{event}': {message}")]
DispatchFailed {
event: String,
message: String,
},
#[error("Failed to serialize event for queue: {0}")]
SerializationFailed(String),
#[error("Failed to deserialize event from queue: {0}")]
DeserializationFailed(String),
#[error("Queue connection failed: {0}")]
QueueConnectionFailed(String),
#[error("{0}")]
Custom(String),
}
impl Error {
pub fn listener_failed(listener: impl Into<String>, message: impl Into<String>) -> Self {
Self::ListenerFailed {
listener: listener.into(),
message: message.into(),
}
}
pub fn dispatch_failed(event: impl Into<String>, message: impl Into<String>) -> Self {
Self::DispatchFailed {
event: event.into(),
message: message.into(),
}
}
pub fn custom(message: impl Into<String>) -> Self {
Self::Custom(message.into())
}
}
impl From<String> for Error {
fn from(s: String) -> Self {
Self::Custom(s)
}
}
impl From<&str> for Error {
fn from(s: &str) -> Self {
Self::Custom(s.to_string())
}
}