summaryrefslogtreecommitdiffstats
path: root/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs39
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)
+ }
}