netgauze_parse_utils/
error.rs1use serde::{Deserialize, Serialize};
17
18#[derive(Debug, Copy, Clone, PartialEq, Eq, thiserror::Error, Serialize, Deserialize)]
22pub enum ParseError {
23 #[error(
24 "unexpected end of buffer at byte offset {offset} (needed {needed}, available {available})"
25 )]
26 UnexpectedEof {
27 offset: usize,
28 needed: usize,
29 available: usize,
30 },
31
32 #[error(
33 "padded read exceeds capacity at byte offset {offset} (requested {requested}, capacity {ret_len})"
34 )]
35 InvalidPaddingLength {
36 offset: usize,
37 requested: usize,
38 ret_len: usize,
39 },
40}
41
42impl ParseError {
43 #[cold]
44 #[inline(never)]
45 pub fn eof(offset: usize, needed: usize, available: usize) -> Self {
46 Self::UnexpectedEof {
47 offset,
48 needed,
49 available,
50 }
51 }
52 #[cold]
53 #[inline(never)]
54 pub fn invalid_padding_length(offset: usize, requested: usize, ret_len: usize) -> Self {
55 Self::InvalidPaddingLength {
56 offset,
57 requested,
58 ret_len,
59 }
60 }
61
62 #[inline]
63 pub fn offset(&self) -> usize {
64 match self {
65 Self::UnexpectedEof { offset, .. } | Self::InvalidPaddingLength { offset, .. } => {
66 *offset
67 }
68 }
69 }
70
71 #[inline]
72 pub fn is_incomplete(&self) -> bool {
73 matches!(self, Self::UnexpectedEof { .. })
74 }
75}