use thiserror::Error;
use std::io;
use tokio::time::error::Elapsed;
#[derive(Debug, Error)]
pub enum SmbError {
#[error(transparent)]
SmbConnectionTimeOut(#[from] Elapsed),
#[error(transparent)]
SmbParseError(#[from] binrw::Error),
#[error(transparent)]
SmbConnectionError(#[from] io::Error),
#[error("Parse address error:{0}")]
SmbDomainError(#[from] std::net::AddrParseError),
#[error("auth error:{reason}")]
SmbAuthentication {
reason: String,
},
#[error("protocol error:{0}")]
SmbProtocolError(String),
#[error("session closed")]
SmbDisconnected,
#[error(transparent)]
SmbOther(#[from] anyhow::Error),
}
pub type SmbResult<T> = Result<T, SmbError>;