use hotfix_message::field_types::Timestamp;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum VerificationIssue {
#[error("sequence gap detected (expected {expected}, actual {actual})")]
SequenceGap { expected: u64, actual: u64 },
#[error(transparent)]
InvalidMessage(#[from] MessageError),
}
#[derive(Debug, Error)]
pub enum MessageError {
#[error(
"sequence number too low (expected {expected:?}, actual {actual:?}, possible duplicate: {possible_duplicate})"
)]
SeqNumberTooLow {
expected: u64,
actual: u64,
possible_duplicate: bool,
},
#[error("incorrect begin string {0}")]
IncorrectBeginString(String),
#[error("incorrect comp id {comp_id} ({comp_id_type:?})")]
IncorrectCompId {
comp_id: String,
comp_id_type: CompIdType,
msg_seq_num: u64,
},
#[error("sending time accuracy issue")]
SendingTimeAccuracyIssue { msg_seq_num: u64 },
#[error("sending time missing")]
SendingTimeMissing { msg_seq_num: u64 },
#[error("original sending time missing")]
OriginalSendingTimeMissing { msg_seq_num: u64 },
#[error(
"original sending time {original_sending_time:?} is after sending time {sending_time:?}"
)]
OriginalSendingTimeAfterSendingTime {
msg_seq_num: u64,
original_sending_time: Timestamp,
sending_time: Timestamp,
},
}
#[derive(Debug)]
pub enum CompIdType {
Sender,
Target,
}