diff --git a/core/src/transport/dummy.rs b/core/src/transport/dummy.rs deleted file mode 100644 index c8c36229..00000000 --- a/core/src/transport/dummy.rs +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. - -use futures::future; -use multiaddr::Multiaddr; -use std::io::Error as IoError; -use transport::{MuxedTransport, Transport}; - -/// Dummy implementation of `MuxedTransport` that uses an inner `Transport`. -#[derive(Debug, Copy, Clone)] -pub struct DummyMuxing { - inner: T, -} - -impl DummyMuxing { - pub fn new(transport: T) -> DummyMuxing { - DummyMuxing { inner: transport } - } -} - -impl MuxedTransport for DummyMuxing -where - T: Transport, -{ - type Incoming = future::Empty; - type IncomingUpgrade = future::Empty<(T::Output, Self::MultiaddrFuture), IoError>; - - fn next_incoming(self) -> Self::Incoming - where - Self: Sized, - { - future::empty() - } -} - -impl Transport for DummyMuxing -where - T: Transport, -{ - type Output = T::Output; - type MultiaddrFuture = T::MultiaddrFuture; - type Listener = T::Listener; - type ListenerUpgrade = T::ListenerUpgrade; - type Dial = T::Dial; - - #[inline] - fn listen_on(self, addr: Multiaddr) -> Result<(Self::Listener, Multiaddr), (Self, Multiaddr)> - where - Self: Sized, - { - self.inner - .listen_on(addr) - .map_err(|(inner, addr)| (DummyMuxing { inner }, addr)) - } - - #[inline] - fn dial(self, addr: Multiaddr) -> Result - where - Self: Sized, - { - self.inner - .dial(addr) - .map_err(|(inner, addr)| (DummyMuxing { inner }, addr)) - } - - #[inline] - fn nat_traversal(&self, server: &Multiaddr, observed: &Multiaddr) -> Option { - self.inner.nat_traversal(server, observed) - } -} diff --git a/core/src/transport/muxed.rs b/core/src/transport/muxed.rs deleted file mode 100644 index eb877e27..00000000 --- a/core/src/transport/muxed.rs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. - -use futures::prelude::*; -use futures::stream; -use std::io::Error as IoError; -use transport::Transport; - -/// Extension trait for `Transport`. Implemented on structs that provide a `Transport` on which -/// the dialed node can dial you back. -pub trait MuxedTransport: Transport { - /// Future resolving to a future that will resolve to an incoming connection. - type Incoming: Future; - /// Future resolving to an incoming connection. - type IncomingUpgrade: Future; - - /// Returns the next incoming substream opened by a node that we dialed ourselves. - /// - /// > **Note**: Doesn't produce incoming substreams coming from addresses we are listening on. - /// > This only concerns nodes that we dialed with `dial()`. - fn next_incoming(self) -> Self::Incoming - where - Self: Sized; - - /// Returns a stream of incoming connections. - #[inline] - fn incoming( - self, - ) -> stream::AndThen, fn(Self) -> Self::Incoming, Self::Incoming> - where - Self: Sized + Clone, - { - stream::repeat(self).and_then(|me| me.next_incoming()) - } -} diff --git a/core/src/upgrade/map_addr.rs b/core/src/upgrade/map_addr.rs deleted file mode 100644 index 4b6de993..00000000 --- a/core/src/upgrade/map_addr.rs +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2018 Parity Technologies (UK) Ltd. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. - -use std::io::Error as IoError; -use futures::{future, prelude::*}; -use tokio_io::{AsyncRead, AsyncWrite}; -use upgrade::{ConnectionUpgrade, Endpoint}; -use Multiaddr; - -/// Applies a closure on the output of a connection upgrade. -#[inline] -pub fn map_with_addr(upgrade: U, map: F) -> MapAddr - where F: FnOnce(I, &Multiaddr) -> O -{ - MapAddr { upgrade, map } -} - -/// Application of a closure on the output of a connection upgrade. -#[derive(Debug, Copy, Clone)] -pub struct MapAddr { - upgrade: U, - map: F, -} - -impl ConnectionUpgrade for MapAddr -where - U: ConnectionUpgrade, - U::Future: Send + 'static, // TODO: 'static :( - U::MultiaddrFuture: Future + Send + 'static, // TODO: 'static :( - U::Output: Send + 'static, // TODO: 'static :( - C: AsyncRead + AsyncWrite, - F: FnOnce(U::Output, &Multiaddr) -> O + Send + 'static, // TODO: 'static :( -{ - type NamesIter = U::NamesIter; - type UpgradeIdentifier = U::UpgradeIdentifier; - - fn protocol_names(&self) -> Self::NamesIter { - self.upgrade.protocol_names() - } - - type Output = O; - type MultiaddrFuture = future::FutureResult; - type Future = Box + Send>; - - fn upgrade( - self, - socket: C, - id: Self::UpgradeIdentifier, - ty: Endpoint, - remote_addr: Maf, - ) -> Self::Future { - let map = self.map; - let fut = self.upgrade - .upgrade(socket, id, ty, remote_addr) - .and_then(|(out, addr)| { - addr.map(move |addr| { - let out = map(out, &addr); - (out, future::ok(addr)) - }) - }); - Box::new(fut) as Box<_> - } -}