hotfix_message/
parsed_message.rs1use crate::error::MessageIntegrityError;
2use crate::message::Message;
3
4pub enum ParsedMessage {
5 Valid(Message),
6 Invalid {
7 message: Message,
8 reason: InvalidReason,
9 },
10 Garbled(GarbledReason),
11 UnexpectedError(String),
12}
13
14impl ParsedMessage {
15 pub fn into_message(self) -> Option<Message> {
16 match self {
17 ParsedMessage::Valid(message) => Some(message),
18 ParsedMessage::Invalid { message, .. } => Some(message),
19 _ => None,
20 }
21 }
22}
23
24pub enum InvalidReason {
25 InvalidField(u32),
26 InvalidGroup(u32),
27 InvalidComponent(String),
28}
29
30#[derive(Debug)]
31pub enum GarbledReason {
32 Malformed,
33 InvalidBeginString,
34 InvalidBodyLength,
35 InvalidMsgType,
36 InvalidChecksum,
37}
38
39impl From<MessageIntegrityError> for ParsedMessage {
40 fn from(header_error: MessageIntegrityError) -> Self {
41 match header_error {
42 MessageIntegrityError::InvalidBeginString => {
43 ParsedMessage::Garbled(GarbledReason::InvalidBeginString)
44 }
45 MessageIntegrityError::InvalidBodyLength => {
46 ParsedMessage::Garbled(GarbledReason::InvalidBodyLength)
47 }
48 MessageIntegrityError::InvalidMsgType => {
49 ParsedMessage::Garbled(GarbledReason::InvalidMsgType)
50 }
51 MessageIntegrityError::InvalidCheckSum => {
52 ParsedMessage::Garbled(GarbledReason::InvalidChecksum)
53 }
54 }
55 }
56}