aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport/libp2p
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-01 20:34:59 +0100
committertv <tv@krebsco.de>2026-11-01 20:34:59 +0100
commit962fe4b43632822dc91fa6a4da6f6f295f4dba32 (patch)
tree5dd0b5c144f9e2e93ea498cab1df9d2295d49f70 /src/transport/libp2p
parentbb0716c8f199f7efb0f89a711a649f89cb09931f (diff)
bootstrap: replace pull by progress notify
Diffstat (limited to 'src/transport/libp2p')
-rw-r--r--src/transport/libp2p/book.rs5
-rw-r--r--src/transport/libp2p/mod.rs4
2 files changed, 9 insertions, 0 deletions
diff --git a/src/transport/libp2p/book.rs b/src/transport/libp2p/book.rs
index 8620895..3de8cef 100644
--- a/src/transport/libp2p/book.rs
+++ b/src/transport/libp2p/book.rs
@@ -111,6 +111,8 @@ pub(super) struct Book {
/// Peers found on the LAN that speak continuum, with their address: seeds not
/// handed out yet (`discovered_seeds`).
pub(super) discovered: Vec<Multiaddr>,
+ /// Told when a seed is found (`Transport::on_seeds_found`).
+ pub(super) seeds_found: Option<Arc<tokio::sync::Notify>>,
}
/// What `Libp2pStats` counts since start.
@@ -253,6 +255,9 @@ impl Book {
&& self.discovered.len() < MAX_PEERS
{
self.discovered.push(address);
+ if let Some(found) = &self.seeds_found {
+ found.notify_one();
+ }
}
}
diff --git a/src/transport/libp2p/mod.rs b/src/transport/libp2p/mod.rs
index 0bbabc7..a159280 100644
--- a/src/transport/libp2p/mod.rs
+++ b/src/transport/libp2p/mod.rs
@@ -488,6 +488,10 @@ impl Transport for Libp2pTransport {
}
}
+ fn on_seeds_found(&self, found: Arc<tokio::sync::Notify>) {
+ lock(&self.book).seeds_found = Some(found);
+ }
+
/// Nodes found on the LAN (mDNS) that speak continuum.
fn discovered_seeds(&self) -> Vec<String> {
std::mem::take(&mut lock(&self.book).discovered)