mirror of
https://github.com/kristoferssolo/tls-pq-bench.git
synced 2026-03-22 00:36:21 +00:00
refactor(server,common): introduce custom error types with thiserror and miette
This commit is contained in:
65
common/src/error.rs
Normal file
65
common/src/error.rs
Normal file
@@ -0,0 +1,65 @@
|
||||
use miette::Diagnostic;
|
||||
use thiserror::Error;
|
||||
|
||||
/// Result type using the common's custom error type.
|
||||
pub type Result<T> = std::result::Result<T, Error>;
|
||||
|
||||
#[derive(Debug, Error, Diagnostic)]
|
||||
pub enum Error {
|
||||
/// File or network I/O error.
|
||||
#[error(transparent)]
|
||||
#[diagnostic(code(common::io_error))]
|
||||
Io(#[from] std::io::Error),
|
||||
|
||||
#[error(transparent)]
|
||||
#[diagnostic(code(common::rustls_error))]
|
||||
Tls(#[from] rustls::Error),
|
||||
|
||||
/// TOML configuration file parse error.
|
||||
#[error(transparent)]
|
||||
#[diagnostic(code(common::toml_error))]
|
||||
Toml(#[from] toml::de::Error),
|
||||
|
||||
#[error(transparent)]
|
||||
#[diagnostic(code(common::json_error))]
|
||||
Json(#[from] serde_json::Error),
|
||||
|
||||
#[error(transparent)]
|
||||
#[diagnostic(code(common::rcgen_error))]
|
||||
RCGen(#[from] rcgen::Error),
|
||||
|
||||
/// Configuration validation or missing required fields.
|
||||
#[error("Config error: {0}")]
|
||||
#[diagnostic(code(common::config_error))]
|
||||
Config(String),
|
||||
|
||||
/// Invalid key exchange mode string.
|
||||
#[error("Invalid mode: {0}")]
|
||||
#[diagnostic(code(common::invalid_mode))]
|
||||
InvalidMode(String),
|
||||
|
||||
/// Protocol-level error (malformed requests, unexpected responses).
|
||||
#[error("Protocol error: {0}")]
|
||||
#[diagnostic(code(common::protocol_error))]
|
||||
Protocol(String),
|
||||
}
|
||||
|
||||
impl Error {
|
||||
/// Create an invalid mode error.
|
||||
#[inline]
|
||||
pub fn invalid_mode(error: impl Into<String>) -> Self {
|
||||
Self::InvalidMode(error.into())
|
||||
}
|
||||
|
||||
/// Create a config error.
|
||||
#[inline]
|
||||
pub fn config(error: impl Into<String>) -> Self {
|
||||
Self::Config(error.into())
|
||||
}
|
||||
|
||||
/// Create a protocol error.
|
||||
#[inline]
|
||||
pub fn protocol(error: impl Into<String>) -> Self {
|
||||
Self::Protocol(error.into())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user