Skip to content

Commit

Permalink
feat(SwarmBuilder): add with_connection_timeout method
Browse files Browse the repository at this point in the history
  • Loading branch information
stormshield-frb committed Aug 28, 2024
1 parent e63975d commit 1300365
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
2 changes: 2 additions & 0 deletions libp2p/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

- Update individual crates.
- Update to [`libp2p-metrics` `0.15.0`](misc/metrics/CHANGELOG.md#0150).
- Add `with_connection_timeout` on `SwarmBuilder` to allow configuration of the connection_timeout parameter.
See [PR 5575](https://github.com/libp2p/rust-libp2p/pull/5575).

## 0.54.0

Expand Down
20 changes: 13 additions & 7 deletions libp2p/src/builder/phase/build.rs
Original file line number Diff line number Diff line change
@@ -1,28 +1,34 @@
use std::time::Duration;

#[allow(unused_imports)]
use super::*;

use crate::SwarmBuilder;
use libp2p_core::Transport;
use libp2p_core::{transport::timeout::TransportTimeout, Transport};
use libp2p_swarm::Swarm;

pub struct BuildPhase<T, B> {
pub(crate) behaviour: B,
pub(crate) transport: T,
pub(crate) swarm_config: libp2p_swarm::Config,
pub(crate) connection_timeout: Duration,
}

const CONNECTION_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(10);
#[allow(unused)] // used in `../swarm.rs` but due to feature flag combinations, clippy gives an unnecessary warning.
pub(crate) const DEFAULT_CONNECTION_TIMEOUT: Duration = Duration::from_secs(10);

impl<Provider, T: AuthenticatedMultiplexedTransport, B: libp2p_swarm::NetworkBehaviour>
SwarmBuilder<Provider, BuildPhase<T, B>>
{
/// Timeout of the [`TransportTimeout`] wrapping the transport.
pub fn with_connection_timeout(mut self, connection_timeout: Duration) -> Self {
self.phase.connection_timeout = connection_timeout;
self
}

pub fn build(self) -> Swarm<B> {
Swarm::new(
libp2p_core::transport::timeout::TransportTimeout::new(
self.phase.transport,
CONNECTION_TIMEOUT,
)
.boxed(),
TransportTimeout::new(self.phase.transport, self.phase.connection_timeout).boxed(),
self.phase.behaviour,
self.keypair.public().to_peer_id(),
self.phase.swarm_config,
Expand Down
1 change: 1 addition & 0 deletions libp2p/src/builder/phase/swarm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ macro_rules! impl_with_swarm_config {
behaviour: self.phase.behaviour,
transport: self.phase.transport,
swarm_config: constructor($config),
connection_timeout: DEFAULT_CONNECTION_TIMEOUT,
},
keypair: self.keypair,
phantom: std::marker::PhantomData,
Expand Down

0 comments on commit 1300365

Please sign in to comment.