diff --git a/finality-aleph/src/network/build/mod.rs b/finality-aleph/src/network/build/mod.rs index 0881555303..2646178b99 100644 --- a/finality-aleph/src/network/build/mod.rs +++ b/finality-aleph/src/network/build/mod.rs @@ -1,6 +1,5 @@ use std::sync::{atomic::AtomicBool, Arc}; -use libp2p::core::transport::Transport; use log::error; use rate_limiter::SleepingRateLimiter; use sc_client_api::Backend; @@ -36,7 +35,6 @@ use base::network as base_network; use own_protocols::Networks; use rpc::spawn_rpc_service; use transactions::spawn_transaction_handler; -use transport::RateLimitedStreamMuxer; const SPAWN_CATEGORY: Option<&str> = Some("networking"); @@ -86,20 +84,7 @@ where let network_rate_limit = network_config.substrate_network_bit_rate; let rate_limiter = SleepingRateLimiter::new(network_rate_limit); - let transport_builder = move |config: sc_network::transport::NetworkConfig| { - let default_transport = sc_network::transport::build_transport( - config.keypair, - config.memory_only, - config.muxer_window_size, - config.muxer_maximum_buffer_size, - ); - default_transport.map(move |(peer_id, stream_muxer), _| { - ( - peer_id, - RateLimitedStreamMuxer::new(stream_muxer, rate_limiter), - ) - }) - }; + let transport_builder = |config| transport::build_transport(rate_limiter, config); let ( network, diff --git a/finality-aleph/src/network/build/transport.rs b/finality-aleph/src/network/build/transport.rs index d49a9aa65d..199822d9ec 100644 --- a/finality-aleph/src/network/build/transport.rs +++ b/finality-aleph/src/network/build/transport.rs @@ -1,7 +1,7 @@ -use libp2p::core::muxing::StreamMuxer; +use libp2p::{core::muxing::StreamMuxer, PeerId, Transport}; use rate_limiter::{FuturesRateLimitedAsyncReadWrite, FuturesRateLimiter, SleepingRateLimiter}; -pub struct RateLimitedStreamMuxer { +struct RateLimitedStreamMuxer { rate_limiter: SleepingRateLimiter, stream_muxer: SM, } @@ -76,3 +76,29 @@ where self.inner().poll(cx) } } + +pub fn build_transport( + rate_limiter: SleepingRateLimiter, + config: sc_network::transport::NetworkConfig, +) -> impl Transport< + Output = ( + PeerId, + impl StreamMuxer + Send, + ), + Dial = impl Send, + ListenerUpgrade = impl Send, + Error = impl Send, +> + Send { + sc_network::transport::build_transport( + config.keypair, + config.memory_only, + config.muxer_window_size, + config.muxer_maximum_buffer_size, + ) + .map(move |(peer_id, stream_muxer), _| { + ( + peer_id, + RateLimitedStreamMuxer::new(stream_muxer, rate_limiter), + ) + }) +}