use crate::protocol::dds::error::RtpsError;
use crate::protocol::dds::transport::error::TransportError;
#[derive(Debug)]
pub enum StatelessError {
Transport(TransportError),
Parse(RtpsError),
HistoryFull,
BufferTooSmall,
}
impl core::fmt::Display for StatelessError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
Self::Transport(e) => write!(f, "stateless transport error: {e}"),
Self::Parse(e) => write!(f, "stateless RTPS parse error: {e}"),
Self::HistoryFull => write!(f, "stateless: history cache is full (capacity == 0)"),
Self::BufferTooSmall => write!(f, "stateless: serialization buffer too small"),
}
}
}
impl std::error::Error for StatelessError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
Self::Transport(e) => Some(e),
_ => None,
}
}
}
impl From<TransportError> for StatelessError {
fn from(e: TransportError) -> Self {
Self::Transport(e)
}
}
impl From<RtpsError> for StatelessError {
fn from(e: RtpsError) -> Self {
Self::Parse(e)
}
}