use thiserror::Error;
#[derive(Debug, Error)]
pub enum ProtocolError {
#[error("Frame too large: {size} bytes")]
FrameTooLarge {
size: usize,
},
#[error("Truncated frame")]
TruncatedFrame,
#[error("Invalid frame length prefix")]
InvalidLengthPrefix,
#[error("Frame length cannot be represented on this platform: {length}")]
FrameLengthOutOfRange {
length: u32,
},
#[error("Frame capacity overflow")]
CapacityOverflow,
#[error("Attempted to discard {count}B from buffer of length {buffer_len}")]
InvalidDiscard {
count: usize,
buffer_len: usize,
},
#[error("Serialization error: {0}")]
Serde(#[from] serde_json::Error),
}