dbus_message_parser/decode/
error.rs

1use crate::{
2    decode::MAXIMUM_VARIANT_DEPTH,
3    message::{MessageHeaderError, MessageHeaderFieldsError},
4    value::{
5        BusError, ErrorError, InterfaceError, MemberError, ObjectPathError, StructError, Type,
6        TypeError, MAXIMUM_ARRAY_LENGTH,
7    },
8};
9use std::str::Utf8Error;
10use thiserror::Error;
11
12pub type DecodeResult<T> = Result<T, DecodeError>;
13
14/// An enum representing all errors, which can occur during the decoding.
15#[derive(Debug, PartialEq, Error)]
16pub enum DecodeError {
17    #[error("Not enough bytes to decode: got {0} offset {1}")]
18    NotEnoughBytes(usize, usize),
19    #[error("Boolean value only can be 0 or 1: {0}")]
20    InvalidBoolean(u32),
21    #[error("Could not decode string as UTF-8: {0}")]
22    Utf8Error(#[from] Utf8Error),
23    #[error("Last byte is not null: {0}")]
24    StringNotNull(u8),
25    #[error("Could not decode Bus: {0}")]
26    BusError(#[from] BusError),
27    #[error("Could not decode ObjectPath: {0}")]
28    ObjectPathError(#[from] ObjectPathError),
29    #[error("Could not decode Interface: {0}")]
30    InterfaceError(#[from] InterfaceError),
31    #[error("Could not decode Member: {0}")]
32    MemberError(#[from] MemberError),
33    #[error("Could not decode Error: {0}")]
34    ErrorError(#[from] ErrorError),
35    #[error("Could not decode Signature: {0}")]
36    SignatureError(#[from] TypeError),
37    #[error("Could not decode Struct: {0}")]
38    StructError(#[from] StructError),
39    #[error("Padding is not zero: {0}")]
40    Padding(u8),
41    #[error("Array length is too big: {MAXIMUM_ARRAY_LENGTH} < {0}")]
42    ArrayTooBig(u32),
43    #[error("Array is invalid: got {0} excepted {1}")]
44    ArrayInvalidLength(usize, usize),
45    #[error("Could not decode the endianness: {0}")]
46    Endianness(u8),
47    #[error("Could not decode MessageType: {0}")]
48    MessageType(u8),
49    #[error("Could not decode MessageFlags: {0}")]
50    MessageFlags(u8),
51    #[error("The body length is zero, but there is a body signature '{0:?}'")]
52    BodyLengthZero(Vec<Type>),
53    #[error("The body signature is missing, but there body length 0 != {0}")]
54    BodySignatureMissing(u32),
55    #[error("Not enough FDs: got {0} offset {1}")]
56    NotEnoughFds(usize, usize),
57    #[error("Could not the body: expected {0} got {1}")]
58    BodyLength(usize, usize),
59    #[error("Could not decode MessageHeader: {0}")]
60    MessageHeaderError(#[from] MessageHeaderError),
61    #[error("Could not decode MessageHeaderFields: {0}")]
62    MessageHeaderFieldsError(#[from] MessageHeaderFieldsError),
63    #[error("Integer overflows occours: {0} + {1}")]
64    IntegerOverflow(usize, usize),
65    #[error("Variant depth is too big: {MAXIMUM_VARIANT_DEPTH} < {0}")]
66    VariantDepth(u8),
67}