use std::net::SocketAddr;
use std::sync::Arc;
use thiserror::Error;
#[derive(Error, Debug, Clone)]
pub enum RpcServerError {
#[error("failed to bind {addr}: {source}")]
BindFailed {
addr: SocketAddr,
#[source]
source: Arc<std::io::Error>,
},
#[error("TLS setup failed: {0}")]
TlsSetup(#[source] Arc<anyhow::Error>),
#[error("fatal server error: {0}")]
Fatal(#[source] Arc<anyhow::Error>),
}
impl From<std::io::Error> for RpcServerError {
fn from(e: std::io::Error) -> Self {
RpcServerError::Fatal(Arc::new(anyhow::anyhow!(e)))
}
}