swarm/src/behaviour: Remove Send bound from NetworkBehaviour (#2535)

The bound is no longer needed across the libp2p-XXX crates.

Co-authored-by: Max Inden <mail@max-inden.de>
This commit is contained in:
Friedel Ziegelmayer 2022-02-28 10:27:58 +01:00 committed by GitHub
parent 99855b1d10
commit e2fcc47da6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 134 additions and 53 deletions

View File

@ -42,6 +42,21 @@
# `libp2p` facade crate
## 0.44.0 [unreleased]
- Update individual crates.
- Update to [`libp2p-dcutr` `v0.2.0`](protocols/dcutr/CHANGELOG.md).
- Update to [`libp2p-rendezvous` `v0.5.0`](protocols/rendezvous/CHANGELOG.md).
- Update to [`libp2p-ping` `v0.35.0`](protocols/ping/CHANGELOG.md).
- Update to [`libp2p-identify` `v0.35.0`](protocols/identify/CHANGELOG.md).
- Update to [`libp2p-floodsub` `v0.35.0`](protocols/floodsub/CHANGELOG.md).
- Update to [`libp2p-relay` `v0.8.0`](protocols/relay/CHANGELOG.md).
- Update to [`libp2p-metrics` `v0.5.0`](misc/metrics/CHANGELOG.md).
- Update to [`libp2p-kad` `v0.36.0`](protocols/kad/CHANGELOG.md).
- Update to [`libp2p-autonat` `v0.3.0`](protocols/autonat/CHANGELOG.md).
- Update to [`libp2p-request-response` `v0.17.0`](protocols/request-response/CHANGELOG.md).
- Update to [`libp2p-swarm` `v0.35.0`](swarm/CHANGELOG.md).
## Version 0.43.0 [2022-02-22]
- Update individual crates.

View File

@ -3,7 +3,7 @@ name = "libp2p"
edition = "2021"
rust-version = "1.56.1"
description = "Peer-to-peer networking library"
version = "0.43.0"
version = "0.44.0"
authors = ["Parity Technologies <admin@parity.io>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -77,22 +77,22 @@ getrandom = "0.2.3" # Explicit dependency to be used in `wasm-bindgen` feature
instant = "0.1.11" # Explicit dependency to be used in `wasm-bindgen` feature
lazy_static = "1.2"
libp2p-autonat = { version = "0.2.0", path = "protocols/autonat", optional = true }
libp2p-autonat = { version = "0.3.0", path = "protocols/autonat", optional = true }
libp2p-core = { version = "0.32.0", path = "core", default-features = false }
libp2p-dcutr = { version = "0.1.0", path = "protocols/dcutr", optional = true }
libp2p-floodsub = { version = "0.34.0", path = "protocols/floodsub", optional = true }
libp2p-identify = { version = "0.34.0", path = "protocols/identify", optional = true }
libp2p-kad = { version = "0.35.0", path = "protocols/kad", optional = true }
libp2p-metrics = { version = "0.4.0", path = "misc/metrics", optional = true }
libp2p-dcutr = { version = "0.2.0", path = "protocols/dcutr", optional = true }
libp2p-floodsub = { version = "0.35.0", path = "protocols/floodsub", optional = true }
libp2p-identify = { version = "0.35.0", path = "protocols/identify", optional = true }
libp2p-kad = { version = "0.36.0", path = "protocols/kad", optional = true }
libp2p-metrics = { version = "0.5.0", path = "misc/metrics", optional = true }
libp2p-mplex = { version = "0.32.0", path = "muxers/mplex", optional = true }
libp2p-noise = { version = "0.35.0", path = "transports/noise", optional = true }
libp2p-ping = { version = "0.34.0", path = "protocols/ping", optional = true }
libp2p-ping = { version = "0.35.0", path = "protocols/ping", optional = true }
libp2p-plaintext = { version = "0.32.0", path = "transports/plaintext", optional = true }
libp2p-pnet = { version = "0.22.0", path = "transports/pnet", optional = true }
libp2p-relay = { version = "0.7.0", path = "protocols/relay", optional = true }
libp2p-rendezvous = { version = "0.4.0", path = "protocols/rendezvous", optional = true }
libp2p-request-response = { version = "0.16.0", path = "protocols/request-response", optional = true }
libp2p-swarm = { version = "0.34.0", path = "swarm" }
libp2p-relay = { version = "0.8.0", path = "protocols/relay", optional = true }
libp2p-rendezvous = { version = "0.5.0", path = "protocols/rendezvous", optional = true }
libp2p-request-response = { version = "0.17.0", path = "protocols/request-response", optional = true }
libp2p-swarm = { version = "0.35.0", path = "swarm" }
libp2p-swarm-derive = { version = "0.27.0", path = "swarm-derive" }
libp2p-uds = { version = "0.32.0", path = "transports/uds", optional = true }
libp2p-wasm-ext = { version = "0.32.0", path = "transports/wasm-ext", default-features = false, optional = true }
@ -106,12 +106,12 @@ smallvec = "1.6.1"
[target.'cfg(not(any(target_os = "emscripten", target_os = "wasi", target_os = "unknown")))'.dependencies]
libp2p-deflate = { version = "0.32.0", path = "transports/deflate", optional = true }
libp2p-dns = { version = "0.32.0", path = "transports/dns", optional = true, default-features = false }
libp2p-mdns = { version = "0.35.0", path = "protocols/mdns", optional = true }
libp2p-mdns = { version = "0.36.0", path = "protocols/mdns", optional = true }
libp2p-tcp = { version = "0.32.0", path = "transports/tcp", default-features = false, optional = true }
libp2p-websocket = { version = "0.34.0", path = "transports/websocket", optional = true }
[target.'cfg(not(target_os = "unknown"))'.dependencies]
libp2p-gossipsub = { version = "0.36.0", path = "protocols/gossipsub", optional = true }
libp2p-gossipsub = { version = "0.37.0", path = "protocols/gossipsub", optional = true }
[dev-dependencies]
async-std = { version = "1.6.2", features = ["attributes"] }

View File

@ -1,3 +1,17 @@
# 0.5.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
- Update to `libp2p-dcutr` `v0.2.0`.
- Update to `libp2p-ping` `v0.35.0`.
- Update to `libp2p-identify` `v0.35.0`.
- Update to `libp2p-relay` `v0.8.0`.
- Update to `libp2p-kad` `v0.36.0`.
# 0.4.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-metrics"
edition = "2021"
rust-version = "1.56.1"
description = "Metrics for libp2p"
version = "0.4.0"
version = "0.5.0"
authors = ["Max Inden <mail@max-inden.de>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -20,16 +20,16 @@ dcutr = ["libp2p-dcutr"]
[dependencies]
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-dcutr = { version = "0.1.0", path = "../../protocols/dcutr", optional = true }
libp2p-identify = { version = "0.34.0", path = "../../protocols/identify", optional = true }
libp2p-kad = { version = "0.35.0", path = "../../protocols/kad", optional = true }
libp2p-ping = { version = "0.34.0", path = "../../protocols/ping", optional = true }
libp2p-relay = { version = "0.7.0", path = "../../protocols/relay", optional = true }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-dcutr = { version = "0.2.0", path = "../../protocols/dcutr", optional = true }
libp2p-identify = { version = "0.35.0", path = "../../protocols/identify", optional = true }
libp2p-kad = { version = "0.36.0", path = "../../protocols/kad", optional = true }
libp2p-ping = { version = "0.35.0", path = "../../protocols/ping", optional = true }
libp2p-relay = { version = "0.8.0", path = "../../protocols/relay", optional = true }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
prometheus-client = "0.15.0"
[target.'cfg(not(target_os = "unknown"))'.dependencies]
libp2p-gossipsub = { version = "0.36.0", path = "../../protocols/gossipsub", optional = true }
libp2p-gossipsub = { version = "0.37.0", path = "../../protocols/gossipsub", optional = true }
[dev-dependencies]
env_logger = "0.8.1"

View File

@ -1,3 +1,9 @@
# 0.3.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
- Update to `libp2p-request-response` `v0.17.0`.
# 0.2.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-autonat"
edition = "2021"
rust-version = "1.56.1"
description = "NAT and firewall detection for libp2p"
version = "0.2.0"
version = "0.3.0"
authors = ["David Craven <david@craven.ch>", "Elena Frank <elena.frank@protonmail.com>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -19,8 +19,8 @@ futures = "0.3"
futures-timer = "3.0"
instant = "0.1"
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-request-response = { version = "0.16.0", path = "../request-response" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
libp2p-request-response = { version = "0.17.0", path = "../request-response" }
log = "0.4"
rand = "0.8"
prost = "0.9"

View File

@ -1,3 +1,7 @@
# 0.2.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.1.0 [2022-02-22]
- Initial release.

View File

@ -3,7 +3,7 @@ name = "libp2p-dcutr"
edition = "2021"
rust-version = "1.56.1"
description = "Direct connection upgrade through relay"
version = "0.1.0"
version = "0.2.0"
authors = ["Max Inden <mail@max-inden.de>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -18,7 +18,7 @@ futures = "0.3.1"
futures-timer = "3.0"
instant = "0.1.11"
libp2p-core = { version = "0.32", path = "../../core" }
libp2p-swarm = { version = "0.34", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
log = "0.4"
prost = "0.7"
thiserror = "1.0"

View File

@ -175,7 +175,7 @@ impl From<dcutr::behaviour::Event> for ClientEvent {
}
}
fn spawn_swarm_on_pool<B: NetworkBehaviour>(pool: &LocalPool, swarm: Swarm<B>) {
fn spawn_swarm_on_pool<B: NetworkBehaviour + Send>(pool: &LocalPool, swarm: Swarm<B>) {
pool.spawner()
.spawn_obj(swarm.collect::<Vec<_>>().map(|_| ()).boxed().into())
.unwrap();

View File

@ -1,3 +1,7 @@
# 0.35.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.34.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-floodsub"
edition = "2021"
rust-version = "1.56.1"
description = "Floodsub protocol for libp2p"
version = "0.34.0"
version = "0.35.0"
authors = ["Parity Technologies <admin@parity.io>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -15,7 +15,7 @@ cuckoofilter = "0.5.0"
fnv = "1.0"
futures = "0.3.1"
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
log = "0.4"
prost = "0.9"
rand = "0.7"

View File

@ -1,3 +1,7 @@
# 0.37.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.36.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-gossipsub"
edition = "2021"
rust-version = "1.56.1"
description = "Gossipsub protocol for libp2p"
version = "0.36.0"
version = "0.37.0"
authors = ["Age Manning <Age@AgeManning.com>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -11,7 +11,7 @@ keywords = ["peer-to-peer", "libp2p", "networking"]
categories = ["network-programming", "asynchronous"]
[dependencies]
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
bytes = "1.0"
byteorder = "1.3.4"

View File

@ -1,3 +1,7 @@
# 0.35.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.34.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-identify"
edition = "2021"
rust-version = "1.56.1"
description = "Nodes identifcation protocol for libp2p"
version = "0.34.0"
version = "0.35.0"
authors = ["Parity Technologies <admin@parity.io>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -14,7 +14,7 @@ categories = ["network-programming", "asynchronous"]
futures = "0.3.1"
futures-timer = "3.0.2"
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
log = "0.4.1"
lru = "0.7.2"
prost = "0.9"

View File

@ -1,3 +1,7 @@
# 0.36.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.35.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-kad"
edition = "2021"
rust-version = "1.56.1"
description = "Kademlia protocol for libp2p"
version = "0.35.0"
version = "0.36.0"
authors = ["Parity Technologies <admin@parity.io>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -19,7 +19,7 @@ asynchronous-codec = "0.6"
futures = "0.3.1"
log = "0.4"
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
prost = "0.9"
rand = "0.7.2"
sha2 = "0.10.0"

View File

@ -1,3 +1,7 @@
# 0.36.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.35.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -2,7 +2,7 @@
name = "libp2p-mdns"
edition = "2021"
rust-version = "1.56.1"
version = "0.35.0"
version = "0.36.0"
description = "Implementation of the libp2p mDNS discovery method"
authors = ["Parity Technologies <admin@parity.io>"]
license = "MIT"
@ -18,7 +18,7 @@ futures = "0.3.13"
if-watch = "1.0.0"
lazy_static = "1.4.0"
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
log = "0.4.14"
rand = "0.8.3"
smallvec = "1.6.1"

View File

@ -1,3 +1,7 @@
# 0.35.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.34.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-ping"
edition = "2021"
rust-version = "1.56.1"
description = "Ping protocol for libp2p"
version = "0.34.0"
version = "0.35.0"
authors = ["Parity Technologies <admin@parity.io>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -15,7 +15,7 @@ futures = "0.3.1"
futures-timer = "3.0.2"
instant = "0.1.11"
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
log = "0.4.1"
rand = "0.7.2"
void = "1.0"

View File

@ -1,3 +1,7 @@
# 0.8.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.7.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-relay"
edition = "2021"
rust-version = "1.56.1"
description = "Communications relaying for libp2p"
version = "0.7.0"
version = "0.8.0"
authors = ["Parity Technologies <admin@parity.io>", "Max Inden <mail@max-inden.de>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -18,7 +18,7 @@ futures = "0.3.1"
futures-timer = "3"
instant = "0.1.11"
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
log = "0.4"
pin-project = "1"
prost = "0.9"

View File

@ -1369,7 +1369,7 @@ fn build_keep_alive_only_swarm() -> Swarm<DummyBehaviour> {
)
}
fn spawn_swarm_on_pool<B: NetworkBehaviour>(pool: &LocalPool, mut swarm: Swarm<B>) {
fn spawn_swarm_on_pool<B: NetworkBehaviour + Send>(pool: &LocalPool, mut swarm: Swarm<B>) {
pool.spawner()
.spawn_obj(
async move {

View File

@ -397,7 +397,7 @@ impl From<PingEvent> for ClientEvent {
}
}
fn spawn_swarm_on_pool<B: NetworkBehaviour>(pool: &LocalPool, swarm: Swarm<B>) {
fn spawn_swarm_on_pool<B: NetworkBehaviour + Send>(pool: &LocalPool, swarm: Swarm<B>) {
pool.spawner()
.spawn_obj(swarm.collect::<Vec<_>>().map(|_| ()).boxed().into())
.unwrap();

View File

@ -1,3 +1,7 @@
# 0.5.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.4.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-rendezvous"
edition = "2021"
rust-version = "1.56.1"
description = "Rendezvous protocol for libp2p"
version = "0.4.0"
version = "0.5.0"
authors = ["The COMIT guys <hello@comit.network>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -13,7 +13,7 @@ categories = ["network-programming", "asynchronous"]
[dependencies]
asynchronous-codec = "0.6"
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
prost = "0.9"
void = "1"
log = "0.4"

View File

@ -140,7 +140,7 @@ pub trait SwarmExt {
/// Establishes a connection to the given [`Swarm`], polling both of them until the connection is established.
async fn block_on_connection<T>(&mut self, other: &mut Swarm<T>)
where
T: NetworkBehaviour,
T: NetworkBehaviour + Send,
<T as NetworkBehaviour>::OutEvent: Debug;
/// Listens on a random memory address, polling the [`Swarm`] until the transport is ready to accept connections.
@ -153,12 +153,12 @@ pub trait SwarmExt {
#[async_trait]
impl<B> SwarmExt for Swarm<B>
where
B: NetworkBehaviour,
B: NetworkBehaviour + Send,
<B as NetworkBehaviour>::OutEvent: Debug,
{
async fn block_on_connection<T>(&mut self, other: &mut Swarm<T>)
where
T: NetworkBehaviour,
T: NetworkBehaviour + Send,
<T as NetworkBehaviour>::OutEvent: Debug,
{
let addr_to_dial = other.external_addresses().next().unwrap().addr.clone();

View File

@ -1,3 +1,7 @@
# 0.17.0 [unreleased]
- Update to `libp2p-swarm` `v0.35.0`.
# 0.16.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.

View File

@ -3,7 +3,7 @@ name = "libp2p-request-response"
edition = "2021"
rust-version = "1.56.1"
description = "Generic Request/Response Protocols"
version = "0.16.0"
version = "0.17.0"
authors = ["Parity Technologies <admin@parity.io>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"
@ -16,7 +16,7 @@ bytes = "1"
futures = "0.3.1"
instant = "0.1.11"
libp2p-core = { version = "0.32.0", path = "../../core", default-features = false }
libp2p-swarm = { version = "0.34.0", path = "../../swarm" }
libp2p-swarm = { version = "0.35.0", path = "../../swarm" }
log = "0.4.11"
rand = "0.7"
smallvec = "1.6.1"

View File

@ -1,3 +1,9 @@
# 0.35.0 [unreleased]
- Remove `Send` bound from `NetworkBehaviour`. See [PR 2535].
[PR 2535]: https://github.com/libp2p/rust-libp2p/pull/2535/
# 0.34.0 [2022-02-22]
- Rename `ProtocolsHandler` to `ConnectionHandler`. Upgrade should be as simple as renaming all

View File

@ -3,7 +3,7 @@ name = "libp2p-swarm"
edition = "2021"
rust-version = "1.56.1"
description = "The libp2p swarm"
version = "0.34.0"
version = "0.35.0"
authors = ["Parity Technologies <admin@parity.io>"]
license = "MIT"
repository = "https://github.com/libp2p/rust-libp2p"

View File

@ -165,7 +165,7 @@ pub(crate) type THandlerOutEvent<THandler> =
/// Optionally one can provide a custom `poll` function through the `#[behaviour(poll_method =
/// "poll")]` attribute. This function must have the same signature as the [`NetworkBehaviour#poll`]
/// function and will be called last within the generated [`NetworkBehaviour`] implementation.
pub trait NetworkBehaviour: Send + 'static {
pub trait NetworkBehaviour: 'static {
/// Handler for all the protocols the network behaviour supports.
type ConnectionHandler: IntoConnectionHandler;