libp2p/builder/phase/
build.rs1#[allow(unused_imports)]
2use super::*;
3
4use crate::SwarmBuilder;
5use libp2p_core::Transport;
6use libp2p_swarm::Swarm;
7
8pub struct BuildPhase<T, B> {
9 pub(crate) behaviour: B,
10 pub(crate) transport: T,
11 pub(crate) swarm_config: libp2p_swarm::Config,
12}
13
14const CONNECTION_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(10);
15
16impl<Provider, T: AuthenticatedMultiplexedTransport, B: libp2p_swarm::NetworkBehaviour>
17 SwarmBuilder<Provider, BuildPhase<T, B>>
18{
19 pub fn build(self) -> Swarm<B> {
20 Swarm::new(
21 libp2p_core::transport::timeout::TransportTimeout::new(
22 self.phase.transport,
23 CONNECTION_TIMEOUT,
24 )
25 .boxed(),
26 self.phase.behaviour,
27 self.keypair.public().to_peer_id(),
28 self.phase.swarm_config,
29 )
30 }
31}