Skip to content

Commit dceaba0

Browse files
committed
Add batching support for AddAddress
1 parent db72675 commit dceaba0

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/lib.rs

+5
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,11 @@ where
192192
self.network.add_address(peer, addr)
193193
}
194194

195+
/// Adds a batch of known `Multiaddr` & `PeerId` pairs.
196+
pub fn add_addresses(&mut self, addresses: Vec<(PeerId, Multiaddr)>) {
197+
self.network.add_addresses(addresses)
198+
}
199+
195200
/// Removes a `Multiaddr` for a `PeerId`.
196201
pub fn remove_address(&mut self, peer: PeerId, addr: Multiaddr) {
197202
self.network.remove_address(peer, addr)

src/net/mod.rs

+12
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ pub enum NetworkCommand {
7979
ListenOn(Multiaddr, UnboundedSender<ListenerEvent>),
8080
AddExternalAddress(Multiaddr),
8181
AddAddress(PeerId, Multiaddr),
82+
AddAddresses(Vec<(PeerId, Multiaddr)>),
8283
RemoveAddress(PeerId, Multiaddr),
8384
PrunePeers(Duration),
8485
Dial(PeerId),
@@ -352,6 +353,10 @@ impl NetworkService {
352353
self.cmd(NetworkCommand::AddAddress(peer, addr));
353354
}
354355

356+
pub fn add_addresses(&mut self, addresses: Vec<(PeerId, Multiaddr)>) {
357+
self.cmd(NetworkCommand::AddAddresses(addresses));
358+
}
359+
355360
pub fn remove_address(&mut self, peer: PeerId, addr: Multiaddr) {
356361
self.cmd(NetworkCommand::RemoveAddress(peer, addr));
357362
}
@@ -661,6 +666,13 @@ async fn poll_swarm<P: StoreParams>(
661666
.behaviour_mut()
662667
.add_address(&peer, addr, AddressSource::User);
663668
}
669+
NetworkCommand::AddAddresses(addresses) => {
670+
for (peer, addr) in addresses {
671+
swarm
672+
.behaviour_mut()
673+
.add_address(&peer, addr, AddressSource::User);
674+
}
675+
}
664676
NetworkCommand::RemoveAddress(peer, addr) => {
665677
swarm.behaviour_mut().remove_address(&peer, &addr);
666678
}

0 commit comments

Comments
 (0)