lapin_futures_tls_api/
lib.rs1#![deny(missing_docs)]
2#![warn(rust_2018_idioms)]
3#![doc(html_root_url = "https://docs.rs/lapin-futures-tls-api/0.19.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 tls_api::{TlsConnector, TlsConnectorBuilder};
63use tokio_tls_api::{self, TlsStream};
64
65use std::io;
66
67use uri::AMQPUri;
68
69fn connector<C: TlsConnector + Send + 'static>(host: String, stream: TcpStream) -> Box<dyn Future<Item = Box<TlsStream<TcpStream>>, Error = io::Error> + Send + 'static> {
70 Box::new(futures::future::result(C::builder().and_then(TlsConnectorBuilder::build).map_err(From::from)).and_then(move |connector| {
71 tokio_tls_api::connect_async(&connector, &host, stream).map_err(From::from).map(Box::new)
72 }))
73}
74
75#[deprecated(note = "use lapin directly instead")]
77pub trait AMQPConnectionTlsApiExt: AMQPConnectionTlsExt<TlsStream<TcpStream>> where Self: Sized {
78 fn connect<C: TlsConnector + Send + 'static>(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::<C>)
81 }
82 fn connect_cancellable<C: TlsConnector + Send + 'static, 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::<C>)
85 }
86 fn connect_full<C: TlsConnector + Send + 'static>(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::<C>, properties)
89 }
90 fn connect_cancellable_full<C: TlsConnector + Send + 'static, 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::<C>, properties)
93 }
94}
95
96impl AMQPConnectionTlsApiExt for AMQPUri {}
97impl<'a> AMQPConnectionTlsApiExt for &'a str {}