1pub const MAX_MESSAGE_LENGTH: usize = 65535;
3pub const MAX_REASON_PHRASE_LENGTH: usize = 1024;
5pub const MAX_GOAWAY_URI_LENGTH: usize = 8192;
7pub const MAX_FULL_TRACK_NAME_LENGTH: usize = 4096;
9pub const MAX_NAMESPACE_TUPLE_SIZE: usize = 32;
11
12#[derive(Debug, thiserror::Error, PartialEq, Eq, Clone)]
14pub enum CodecError {
15 #[error("unknown message type: 0x{0:x}")]
17 UnknownMessageType(u64),
18 #[error("insufficient bytes")]
20 UnexpectedEnd,
21 #[error("message too long: {0} bytes (max {MAX_MESSAGE_LENGTH})")]
23 MessageTooLong(usize),
24 #[error("varint error: {0}")]
26 VarInt(#[from] crate::varint::VarIntError),
27 #[error("kvp error: {0}")]
29 Kvp(#[from] crate::kvp::KvpError),
30 #[error("invalid field value")]
32 InvalidField,
33 #[error("namespace tuple must have 1-{MAX_NAMESPACE_TUPLE_SIZE} elements, got {0}")]
35 InvalidNamespaceTupleSize(usize),
36 #[error("full track name exceeds {MAX_FULL_TRACK_NAME_LENGTH} bytes")]
38 TrackNameTooLong,
39 #[error("reason phrase exceeds {MAX_REASON_PHRASE_LENGTH} bytes")]
41 ReasonPhraseTooLong,
42 #[error("GOAWAY URI exceeds {MAX_GOAWAY_URI_LENGTH} bytes")]
44 GoAwayUriTooLong,
45 #[error("unsupported draft: {0}")]
47 UnsupportedDraft(String),
48}