1//! XMPP implementation with asynchronous I/O using Tokio.
2
3#![deny(unsafe_code, missing_docs, bare_trait_objects)]
4
5#[cfg(all(
6 not(xmpprs_doc_build),
7 not(doc),
8 feature = "tls-native",
9 feature = "tls-rust"
10))]
11compile_error!("Both tls-native and tls-rust features can't be enabled at the same time.");
12
13#[cfg(all(
14 feature = "starttls",
15 not(feature = "tls-native"),
16 not(feature = "tls-rust")
17))]
18compile_error!(
19 "when starttls feature enabled one of tls-native and tls-rust features must be enabled."
20);
21
22#[cfg(feature = "starttls")]
23pub mod starttls;
24mod stream_start;
25#[cfg(feature = "insecure-tcp")]
26pub mod tcp;
27mod xmpp_codec;
28pub use crate::xmpp_codec::{Packet, XmppCodec};
29mod event;
30pub use event::Event;
31mod client;
32pub mod connect;
33pub mod stream_features;
34pub mod xmpp_stream;
35
36pub use client::{
37 async_client::{Client as AsyncClient, Config as AsyncConfig},
38 simple_client::Client as SimpleClient,
39};
40mod component;
41pub use crate::component::Component;
42mod error;
43pub use crate::error::{AuthError, Error, ParseError, ProtocolError};
44
45// Re-exports
46pub use minidom::Element;
47pub use xmpp_parsers as parsers;
48pub use xmpp_parsers::{BareJid, FullJid, Jid, JidParseError};