use ironfix_core::error::DecodeError;
use ironfix_transport::CodecError;
use std::time::Duration;
#[derive(Debug, thiserror::Error)]
pub enum EngineError {
#[error("io error: {0}")]
Io(#[from] std::io::Error),
#[error("codec error: {0}")]
Codec(#[from] CodecError),
#[error("decode error: {0}")]
Decode(#[from] DecodeError),
#[error("connect timed out after {0:?}")]
ConnectTimeout(Duration),
#[error("logon timed out after {0:?}")]
LogonTimeout(Duration),
#[error("logon rejected: {reason}")]
LogonRejected {
reason: String,
},
#[error("unexpected message during logon: 35={msg_type}")]
UnexpectedMessage {
msg_type: String,
},
#[error("sequence error: {0}")]
Sequence(String),
#[error("connection closed")]
Closed,
}