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