diff options
Diffstat (limited to 'src/error.rs')
-rw-r--r-- | src/error.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs index 469670a..14c6187 100644 --- a/src/error.rs +++ b/src/error.rs @@ -22,13 +22,36 @@ pub enum Error { #[error(display = "Handshake error: {}", _0)] Handshake(#[error(source)] kuska_handshake::async_std::Error), + #[error(display = "UTF8 error: {}", _0)] + UTF8(#[error(source)] std::string::FromUtf8Error), + #[error(display = "{}", _0)] Message(String), + #[error(display = "No handler / shutting down")] + NoHandler, + #[error(display = "Remote error: {}", _0)] Remote(String), } +impl Error { + pub fn code(&self) -> u8 { + match self { + Self::Io(_) => 100, + Self::TokioJoin(_) => 110, + Self::OneshotRecv(_) => 111, + Self::RMPEncode(_) => 10, + Self::RMPDecode(_) => 11, + Self::UTF8(_) => 12, + Self::NoHandler => 20, + Self::Handshake(_) => 30, + Self::Remote(_) => 40, + Self::Message(_) => 99, + } + } +} + impl<T> From<tokio::sync::watch::error::SendError<T>> for Error { fn from(_e: tokio::sync::watch::error::SendError<T>) -> Error { Error::Message("Watch send error".into()) |