feat(lib): add optional tcp feature, split from runtime
				
					
				
			The `HttpConnector` and `AddrListener` types which make use of `tokio::tcp` have been made their own optional feature. This allows using them without requiring the *full* tokio runtime.
This commit is contained in:
		| @@ -249,15 +249,18 @@ impl Iterator for IpAddrs { | ||||
| /// | ||||
| /// Unlike the `GaiResolver` this will not spawn dedicated threads, but only works when running on the | ||||
| /// multi-threaded Tokio runtime. | ||||
| #[cfg(feature = "runtime")] | ||||
| #[derive(Clone, Debug)] | ||||
| pub struct TokioThreadpoolGaiResolver(()); | ||||
|  | ||||
| /// The future returned by `TokioThreadpoolGaiResolver`. | ||||
| #[cfg(feature = "runtime")] | ||||
| #[derive(Debug)] | ||||
| pub struct TokioThreadpoolGaiFuture { | ||||
|     name: Name, | ||||
| } | ||||
|  | ||||
| #[cfg(feature = "runtime")] | ||||
| impl TokioThreadpoolGaiResolver { | ||||
|     /// Creates a new DNS resolver that will use tokio threadpool's blocking | ||||
|     /// feature. | ||||
| @@ -268,6 +271,7 @@ impl TokioThreadpoolGaiResolver { | ||||
|     } | ||||
| } | ||||
|  | ||||
| #[cfg(feature = "runtime")] | ||||
| impl Resolve for TokioThreadpoolGaiResolver { | ||||
|     type Addrs = GaiAddrs; | ||||
|     type Future = TokioThreadpoolGaiFuture; | ||||
| @@ -277,6 +281,7 @@ impl Resolve for TokioThreadpoolGaiResolver { | ||||
|     } | ||||
| } | ||||
|  | ||||
| #[cfg(feature = "runtime")] | ||||
| impl Future for TokioThreadpoolGaiFuture { | ||||
|     type Output = Result<GaiAddrs, io::Error>; | ||||
|  | ||||
|   | ||||
| @@ -14,7 +14,8 @@ use tokio_timer::Delay; | ||||
|  | ||||
| use crate::common::{Future, Pin, Poll, task}; | ||||
| use super::{Connect, Connected, Destination}; | ||||
| use super::dns::{self, GaiResolver, Resolve, TokioThreadpoolGaiResolver}; | ||||
| use super::dns::{self, GaiResolver, Resolve}; | ||||
| #[cfg(feature = "runtime")] use super::dns::TokioThreadpoolGaiResolver; | ||||
|  | ||||
| // TODO: unbox me? | ||||
| type ConnectFuture = Pin<Box<dyn Future<Output = io::Result<TcpStream>> + Send>>; | ||||
| @@ -81,6 +82,7 @@ impl HttpConnector { | ||||
|     } | ||||
| } | ||||
|  | ||||
| #[cfg(feature = "runtime")] | ||||
| impl HttpConnector<TokioThreadpoolGaiResolver> { | ||||
|     /// Construct a new HttpConnector using the `TokioThreadpoolGaiResolver`. | ||||
|     /// | ||||
|   | ||||
| @@ -15,9 +15,9 @@ use tokio_io::{AsyncRead, AsyncWrite}; | ||||
|  | ||||
| use crate::common::{Future, Unpin}; | ||||
|  | ||||
| #[cfg(feature = "runtime")] pub mod dns; | ||||
| #[cfg(feature = "runtime")] mod http; | ||||
| #[cfg(feature = "runtime")] pub use self::http::{HttpConnector, HttpInfo}; | ||||
| #[cfg(feature = "tcp")] pub mod dns; | ||||
| #[cfg(feature = "tcp")] mod http; | ||||
| #[cfg(feature = "tcp")] pub use self::http::{HttpConnector, HttpInfo}; | ||||
|  | ||||
| /// Connect to a destination, returning an IO transport. | ||||
| /// | ||||
|   | ||||
		Reference in New Issue
	
	Block a user