tokio_xmpp/connect/
mod.rs1use sasl::common::ChannelBinding;
4use tokio::io::{AsyncBufRead, AsyncWrite};
5use xmpp_parsers::jid::Jid;
6
7use crate::xmlstream::{PendingFeaturesRecv, Timeouts};
8use crate::Error;
9
10#[cfg(feature = "starttls")]
11pub mod starttls;
12#[cfg(feature = "starttls")]
13pub use starttls::StartTlsServerConnector;
14
15#[cfg(feature = "direct-tls")]
16pub mod direct_tls;
17#[cfg(feature = "direct-tls")]
18pub use direct_tls::DirectTlsServerConnector;
19
20#[cfg(feature = "insecure-tcp")]
21pub mod tcp;
22#[cfg(feature = "insecure-tcp")]
23pub use tcp::TcpServerConnector;
24
25#[cfg(any(feature = "direct-tls", feature = "starttls"))]
26pub mod tls_common;
27
28mod dns;
29pub use dns::DnsConfig;
30
31pub trait AsyncReadAndWrite: AsyncBufRead + AsyncWrite + Unpin + Send {}
33impl<T: AsyncBufRead + AsyncWrite + Unpin + Send> AsyncReadAndWrite for T {}
34
35pub trait ServerConnectorError: core::error::Error + Sync + Send {}
37
38pub trait ServerConnector: Clone + core::fmt::Debug + Send + Unpin + 'static {
40 type Stream: AsyncReadAndWrite;
42 fn connect(
44 &self,
45 jid: &Jid,
46 ns: &'static str,
47 timeouts: Timeouts,
48 ) -> impl core::future::Future<
49 Output = Result<(PendingFeaturesRecv<Self::Stream>, ChannelBinding), Error>,
50 > + Send;
51}