use std::io;
use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("io error: {0}")]
Io(#[from] io::Error),
#[error("timeout waiting for response")]
Timeout,
#[error("protocol error: {0}")]
Protocol(&'static str),
#[error("protocol error: {0}")]
ProtocolOwned(String),
#[error("authentication failed: {0}")]
AuthenticationFailed(&'static str),
#[error("crypto error: {0}")]
Crypto(&'static str),
#[error("unsupported: {0}")]
Unsupported(&'static str),
#[error("invalid argument: {0}")]
InvalidArgument(&'static str),
#[error("ipmi completion code: {completion_code:#04x}")]
CompletionCode {
completion_code: u8,
},
}
impl Error {
#[allow(dead_code)]
pub(crate) fn protocol_owned(msg: impl Into<String>) -> Self {
Self::ProtocolOwned(msg.into())
}
}