use crate::UID;
#[derive(Debug, Clone, thiserror::Error)]
#[non_exhaustive]
pub enum MessagingError {
#[error("endpoint not found: {token}")]
EndpointNotFound {
token: UID,
},
#[error("deserialization failed: {message}")]
DeserializationFailed {
message: String,
},
#[error("serialization failed: {message}")]
SerializationFailed {
message: String,
},
#[error("peer error: {message}")]
PeerError {
message: String,
},
#[error("invalid well-known token: {index} (max: {max})")]
InvalidWellKnownToken {
index: u32,
max: usize,
},
#[error("invalid state: {message}")]
InvalidState {
message: String,
},
#[error("network error: {message}")]
NetworkError {
message: String,
},
#[error("local_address is required - call .local_address(addr) before .build()")]
MissingLocalAddress,
}
impl From<serde_json::Error> for MessagingError {
fn from(err: serde_json::Error) -> Self {
MessagingError::DeserializationFailed {
message: err.to_string(),
}
}
}
impl From<crate::PeerError> for MessagingError {
fn from(err: crate::PeerError) -> Self {
MessagingError::PeerError {
message: err.to_string(),
}
}
}