pub const MAX_MESSAGE_LENGTH: usize = 65535;
pub const MAX_REASON_PHRASE_LENGTH: usize = 1024;
pub const MAX_GOAWAY_URI_LENGTH: usize = 8192;
pub const MAX_FULL_TRACK_NAME_LENGTH: usize = 4096;
pub const MAX_NAMESPACE_TUPLE_SIZE: usize = 32;
#[derive(Debug, thiserror::Error, PartialEq, Eq, Clone)]
pub enum CodecError {
#[error("unknown message type: 0x{0:x}")]
UnknownMessageType(u64),
#[error("insufficient bytes")]
UnexpectedEnd,
#[error("message too long: {0} bytes (max {MAX_MESSAGE_LENGTH})")]
MessageTooLong(usize),
#[error("varint error: {0}")]
VarInt(#[from] crate::varint::VarIntError),
#[error("kvp error: {0}")]
Kvp(#[from] crate::kvp::KvpError),
#[error("invalid field value")]
InvalidField,
#[error("namespace tuple must have 1-{MAX_NAMESPACE_TUPLE_SIZE} elements, got {0}")]
InvalidNamespaceTupleSize(usize),
#[error("full track name exceeds {MAX_FULL_TRACK_NAME_LENGTH} bytes")]
TrackNameTooLong,
#[error("reason phrase exceeds {MAX_REASON_PHRASE_LENGTH} bytes")]
ReasonPhraseTooLong,
#[error("GOAWAY URI exceeds {MAX_GOAWAY_URI_LENGTH} bytes")]
GoAwayUriTooLong,
#[error("unsupported draft: {0}")]
UnsupportedDraft(String),
}