use thiserror::Error;
#[derive(Debug, Error, PartialEq, Eq)]
pub enum MessageError {
#[error("envelope is {size} bytes, exceeds the {max}-byte cap")]
EnvelopeTooLarge { size: usize, max: usize },
#[error("truncated envelope: {0}")]
Truncated(String),
#[error("unsupported envelope version {0}")]
UnsupportedVersion(u8),
#[error("unsupported compression id {0}")]
UnsupportedCompression(u8),
#[error("declared uncompressed length {declared} exceeds the {max}-byte cap")]
DecompressionBomb { declared: usize, max: usize },
#[error("decompressed length mismatch: expected {expected}, got {actual}")]
DecompressedLengthMismatch { expected: usize, actual: usize },
#[error("payload is {0} bytes, exceeds the u32 uncompressed_len field")]
PayloadTooLarge(usize),
#[error("codec error: {0}")]
Codec(String),
}
pub type Result<T> = std::result::Result<T, MessageError>;