use std::fmt;
#[derive(Debug)]
pub enum Error {
EmptyBuffer,
InvalidVersion(u8, u8),
UnknownPacket(u8),
Truncated,
NameTooLong,
Cbor(String),
Bottle(bottlers::BottleError),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::EmptyBuffer => write!(f, "empty buffer"),
Error::InvalidVersion(v, p) => {
write!(f, "invalid packet version {v} (packet {p})")
}
Error::UnknownPacket(p) => {
write!(f, "failed to parse message: unknown packet id {p:x}")
}
Error::Truncated => write!(f, "truncated packet"),
Error::NameTooLong => write!(f, "cannot read name from packet: too long"),
Error::Cbor(e) => write!(f, "cbor error: {e}"),
Error::Bottle(e) => write!(f, "bottle error: {e}"),
}
}
}
impl std::error::Error for Error {}
impl From<bottlers::BottleError> for Error {
fn from(e: bottlers::BottleError) -> Self {
Error::Bottle(e)
}
}