diff --git a/libp2p/src/lib.rs b/libp2p/src/lib.rs index 7df9c637..eb34e0ce 100644 --- a/libp2p/src/lib.rs +++ b/libp2p/src/lib.rs @@ -59,15 +59,14 @@ pub struct CommonTransport { inner: CommonTransportInner } -#[derive(Debug, Clone)] #[cfg(not(target_os = "emscripten"))] -struct CommonTransportInner { - inner: websocket::WsConfig>, -} -#[derive(Debug, Clone)] +pub type InnerImplementation = core::transport::OrTransport, websocket::WsConfig>>; #[cfg(target_os = "emscripten")] +pub type InnerImplementation = websocket::BrowserWsConfig; + +#[derive(Debug, Clone)] struct CommonTransportInner { - inner: websocket::BrowserWsConfig, + inner: InnerImplementation, } impl CommonTransport { @@ -77,10 +76,11 @@ impl CommonTransport { pub fn new(tokio_handle: tokio_core::reactor::Handle) -> CommonTransport { let tcp = tcp::TcpConfig::new(tokio_handle); let with_dns = dns::DnsConfig::new(tcp); - let with_ws = websocket::WsConfig::new(with_dns); + let with_ws = websocket::WsConfig::new(with_dns.clone()); + let inner = with_dns.or_transport(with_ws); CommonTransport { - inner: CommonTransportInner { inner: with_ws } + inner: CommonTransportInner { inner } } } @@ -95,11 +95,6 @@ impl CommonTransport { } } -#[cfg(not(target_os = "emscripten"))] -pub type InnerImplementation = websocket::WsConfig>; -#[cfg(target_os = "emscripten")] -pub type InnerImplementation = websocket::BrowserWsConfig; - impl Transport for CommonTransport { type Output = ::Output; type Listener = ::Listener;