libp2p/builder/phase/
build.rs

1#[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}