diff options
Diffstat (limited to 'src/error.rs')
-rw-r--r-- | src/error.rs | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/error.rs b/src/error.rs index a632537..20ebc3e 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,7 +1,44 @@ +use std::str::Utf8Error; + +use rsasl::mechname::MechanismNameError; + #[derive(Debug)] pub enum JabberError { - ConnectionError, + Connection, BadStream, StartTlsUnavailable, TlsNegotiation, + Utf8Decode, + XML(quick_xml::Error), + SASL(SASLError), +} + +#[derive(Debug)] +pub enum SASLError { + SASL(rsasl::prelude::SASLError), + MechanismName(MechanismNameError), +} + +impl From<rsasl::prelude::SASLError> for JabberError { + fn from(e: rsasl::prelude::SASLError) -> Self { + Self::SASL(SASLError::SASL(e)) + } +} + +impl From<MechanismNameError> for JabberError { + fn from(value: MechanismNameError) -> Self { + Self::SASL(SASLError::MechanismName(value)) + } +} + +impl From<Utf8Error> for JabberError { + fn from(e: Utf8Error) -> Self { + Self::Utf8Decode + } +} + +impl From<quick_xml::Error> for JabberError { + fn from(e: quick_xml::Error) -> Self { + Self::XML(e) + } } |