1use std::io;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5pub enum EncodingError {
6 #[error("IO error")]
7 IOError(#[from] io::Error),
8}
9
10pub type EncodingResult<T> = Result<T, EncodingError>;
11
12#[derive(Error, Debug)]
13pub enum ParserError {
14 #[error("IO error")]
15 IOError(#[from] io::Error),
16 #[error("field (tag = {0}) is missing from FIX dictionary")]
17 InvalidField(u32),
18 #[error("group (tag = {0}) is missing from FIX dictionary")]
19 InvalidGroup(u32),
20 #[error("component (name = {0}) is missing from FIX dictionary")]
21 InvalidComponent(String),
22 #[error("MsgType {0} is not a valid message type")]
23 InvalidMsgType(String),
24 #[error("malformed message: {0}")]
25 Malformed(String),
26}
27
28pub type ParserResult<T> = Result<T, ParserError>;
29
30#[derive(Error, Debug)]
31#[allow(clippy::enum_variant_names)]
32pub(crate) enum MessageIntegrityError {
33 #[error("Invalid BeginString")]
34 InvalidBeginString,
35 #[error("Invalid BodyLength")]
36 InvalidBodyLength,
37 #[error("Invalid MsgType")]
38 InvalidMsgType,
39 #[error("Invalid CheckSum")]
40 InvalidCheckSum,
41}