lapin_futures_native_tls/
lib.rs1#![deny(missing_docs)]
2#![warn(rust_2018_idioms)]
3#![doc(html_root_url = "https://docs.rs/lapin-futures-native-tls/0.10.1/")]
4
5#[deprecated(note = "use lapin directly instead")]
48pub mod error;
49#[deprecated(note = "use lapin directly instead")]
51pub mod lapin;
52#[deprecated(note = "use lapin directly instead")]
54pub mod uri;
55
56#[deprecated(note = "use lapin directly instead")]
58pub type AMQPStream = lapin_futures_tls_internal::AMQPStream<TlsStream<TcpStream>>;
59
60use futures::{self, future::Future};
61use lapin_futures_tls_internal::{self, AMQPConnectionTlsExt, error::Error, lapin::client::ConnectionProperties, TcpStream};
62use native_tls;
63use tokio_tls::{TlsConnector, TlsStream};
64
65use std::io;
66
67use uri::AMQPUri;
68
69fn connector(host: String, stream: TcpStream) -> Box<dyn Future<Item = Box<TlsStream<TcpStream>>, Error = io::Error> + Send + 'static> {
70 Box::new(futures::future::result(native_tls::TlsConnector::builder().build().map_err(|_| io::Error::new(io::ErrorKind::Other, "Failed to create connector"))).and_then(move |connector| {
71 TlsConnector::from(connector).connect(&host, stream).map_err(|_| io::Error::new(io::ErrorKind::Other, "Failed to connect")).map(Box::new)
72 }))
73}
74
75#[deprecated(note = "use lapin directly instead")]
77pub trait AMQPConnectionNativeTlsExt: AMQPConnectionTlsExt<TlsStream<TcpStream>> where Self: Sized {
78 fn connect(self) -> Box<dyn Future<Item = (lapin::client::Client<AMQPStream>, lapin::client::HeartbeatHandle, Box<dyn Future<Item = (), Error = Error> + Send + 'static>), Error = Error> + Send + 'static> {
80 AMQPConnectionTlsExt::connect(self, connector)
81 }
82 fn connect_cancellable<F: FnOnce(Error) + Send + 'static>(self, heartbeat_error_handler: F) -> Box<dyn Future<Item = (lapin::client::Client<AMQPStream>, lapin::client::HeartbeatHandle), Error = Error> + Send + 'static> {
84 AMQPConnectionTlsExt::connect_cancellable(self, heartbeat_error_handler, connector)
85 }
86 fn connect_full(self, properties: ConnectionProperties) -> Box<dyn Future<Item = (lapin::client::Client<AMQPStream>, lapin::client::HeartbeatHandle, Box<dyn Future<Item = (), Error = Error> + Send + 'static>), Error = Error> + Send + 'static> {
88 AMQPConnectionTlsExt::connect_full(self, connector, properties)
89 }
90 fn connect_cancellable_full<F: FnOnce(Error) + Send + 'static>(self, heartbeat_error_handler: F, properties: ConnectionProperties) -> Box<dyn Future<Item = (lapin::client::Client<AMQPStream>, lapin::client::HeartbeatHandle), Error = Error> + Send + 'static> {
92 AMQPConnectionTlsExt::connect_cancellable_full(self, heartbeat_error_handler, connector, properties)
93 }
94}
95
96impl AMQPConnectionNativeTlsExt for AMQPUri {}
97impl<'a> AMQPConnectionNativeTlsExt for &'a str {}