use thiserror::Error;
#[derive(Error, Debug)]
#[non_exhaustive]
pub enum Error {
#[error(transparent)]
AddrParseError(#[from] std::net::AddrParseError),
#[error(transparent)]
TranportFailure(#[from] tonic::transport::Error),
#[error(transparent)]
RpcError(#[from] wick_rpc::Error),
#[error("Internal Error: {0}")]
InternalError(String),
#[error("{0}")]
CollectionError(String),
#[error("Component error: {0}")]
ComponentError(String),
#[error("Error sending output to channel")]
SendError,
#[error("General error: {0}")]
Other(String),
}
impl From<tokio::task::JoinError> for Error {
fn from(e: tokio::task::JoinError) -> Self {
Error::InternalError(format!("Tokio Error: {}", e))
}
}
impl From<std::io::Error> for Error {
fn from(e: std::io::Error) -> Self {
Error::InternalError(format!("IO Error: {}", e))
}
}
impl From<Box<dyn std::error::Error + Send + Sync>> for Error {
fn from(e: Box<dyn std::error::Error + Send + Sync>) -> Self {
Error::CollectionError(e.to_string())
}
}