diff options
| author | tv <tv@krebsco.de> | 2026-11-01 20:34:59 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-01 20:34:59 +0100 |
| commit | 7f018573730dc57f9608fe41faa54b44abba841d (patch) | |
| tree | 1c77e9b4756dc92ce1088acb6e8d3e44eee712f9 /src/transport/libp2p | |
| parent | 7b8a6c75a13547bc9e541a6a9fcba01b0df06188 (diff) | |
bootstrap: replace pull by progress notify
Diffstat (limited to 'src/transport/libp2p')
| -rw-r--r-- | src/transport/libp2p/book.rs | 5 | ||||
| -rw-r--r-- | src/transport/libp2p/mod.rs | 4 |
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) |
