rabbitmq_stream_protocol/message/amqp/
error.rs

1use std::string::FromUtf8Error;
2
3use crate::error::IncompleteError;
4
5use super::codec::constants::TypeCode;
6
7#[derive(Debug)]
8pub enum AmqpEncodeError {
9    Io(std::io::Error),
10}
11
12impl From<std::io::Error> for AmqpEncodeError {
13    fn from(err: std::io::Error) -> Self {
14        AmqpEncodeError::Io(err)
15    }
16}
17
18#[derive(Debug)]
19pub enum AmqpDecodeError {
20    InvalidTypeCode(u8),
21    InvalidTypeCodeFor { target: String, code: TypeCode },
22    MessageParse(String),
23    Incomplete(IncompleteError),
24    Utf8Error(FromUtf8Error),
25    UuidError(uuid::Error),
26}
27
28impl AmqpDecodeError {
29    pub fn parse_error(msg: impl Into<String>) -> AmqpDecodeError {
30        AmqpDecodeError::MessageParse(msg.into())
31    }
32}
33
34impl From<IncompleteError> for AmqpDecodeError {
35    fn from(err: IncompleteError) -> Self {
36        AmqpDecodeError::Incomplete(err)
37    }
38}
39
40impl From<FromUtf8Error> for AmqpDecodeError {
41    fn from(err: FromUtf8Error) -> Self {
42        AmqpDecodeError::Utf8Error(err)
43    }
44}
45impl From<uuid::Error> for AmqpDecodeError {
46    fn from(err: uuid::Error) -> Self {
47        AmqpDecodeError::UuidError(err)
48    }
49}