use rusty_modbus_frame::FrameError;
use rusty_modbus_types::FunctionCode;
#[derive(Debug, thiserror::Error)]
pub enum TransportError {
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("frame error: {0}")]
Frame(#[from] FrameError),
#[error("operation timed out")]
Timeout,
#[error("disconnected")]
Disconnected,
#[error("access denied")]
AccessDenied,
#[error("TLS handshake failed: {0}")]
TlsHandshake(String),
#[error("authorization denied for role {role:?} on {function_code}")]
AuthorizationDenied {
role: Option<String>,
function_code: FunctionCode,
},
}
pub type TcpError = TransportError;