rm stale DomainError, add error docs

This commit is contained in:
Astro 2018-09-08 01:42:23 +02:00
parent ce2ce363b0
commit d3fab29d38
2 changed files with 23 additions and 25 deletions

View file

@ -10,15 +10,21 @@ use trust_dns_proto::error::ProtoError;
use xmpp_parsers::error::Error as ParsersError;
use xmpp_parsers::sasl::DefinedCondition as SaslDefinedCondition;
/// Top-level error type
#[derive(Debug, Error)]
pub enum Error {
/// I/O error
Io(IoError),
/// Error resolving DNS and establishing a connection
Connection(ConnecterError),
/// DNS label conversion error, no details available from module
/// `idna`
Idna,
/// Protocol-level error
Protocol(ProtocolError),
/// Authentication error
Auth(AuthError),
/// TLS error
Tls(TlsError),
/// Shoud never happen
InvalidState,
@ -62,57 +68,49 @@ impl fmt::Display for ParseError {
}
}
/// XMPP protocol-level error
#[derive(Debug, Error)]
pub enum ProtocolError {
/// XML parser error
Parser(ParserError),
/// Error with expected stanza schema
#[error(non_std)]
Parsers(ParsersError),
/// No TLS available
NoTls,
/// Invalid response to resource binding
InvalidBindResponse,
/// No xmlns attribute in <stream:stream>
NoStreamNamespace,
/// No id attribute in <stream:stream>
NoStreamId,
/// Encountered an unexpected XML token
InvalidToken,
}
/// Authentication error
#[derive(Debug, Error)]
pub enum AuthError {
/// No SASL mechanism available
/// No matching SASL mechanism available
NoMechanism,
/// Local SASL implementation error
#[error(no_from, non_std, msg_embedded)]
Sasl(String),
/// Failure from server
#[error(non_std)]
Fail(SaslDefinedCondition),
/// Component authentication failure
#[error(no_from)]
ComponentFail,
}
/// Error establishing connection
#[derive(Debug, Error)]
pub enum ConnecterError {
NoSrv,
/// All attempts failed, no error available
AllFailed,
/// DNS name error
Domain(DomainError),
/// DNS resolution error
/// DNS protocol error
Dns(ProtoError),
/// DNS resolution error
Resolve(ResolveError),
}
/// DNS name error wrapper type
#[derive(Debug)]
pub struct DomainError(pub String);
impl StdError for DomainError {
fn description(&self) -> &str {
&self.0
}
fn cause(&self) -> Option<&StdError> {
None
}
}
impl fmt::Display for DomainError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.0)
}
}

View file

@ -1,4 +1,4 @@
// #![deny(unsafe_code, unused, missing_docs)]
#![deny(unsafe_code, unused, missing_docs)]
//! XMPP implemeentation with asynchronous I/O using Tokio.