#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("message parser: unexpected end of stream")]
UnexpectedEof,
#[error("message parser: too much data encountered")]
MessageTooMuchData,
#[error("message parser: {0}")]
MessageParse(String),
#[error("required header not found: {0}")]
HeaderNotFound(String),
#[error("cannot change input/output streams after initialization")]
StreamAlreadyInitialized,
#[error("unexpected message type from APT: {0:?}")]
UnexpectedMessageType(crate::message::MessageType, crate::message::Message),
}