diff options
| author | tv <tv@krebsco.de> | 2026-10-31 04:48:00 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-31 04:48:00 +0100 |
| commit | 3a4f0c0413f7e4eef5313882a7bcc43193166bbb (patch) | |
| tree | 898e7d2d958d46b4b918b1d8a84a2210ec8c15bb /src/state/mod.rs | |
| parent | 602dcc39ba2f7cd8a3ef1cd9abbaa204d8b13643 (diff) | |
unify request_sync logic
Diffstat (limited to 'src/state/mod.rs')
| -rw-r--r-- | src/state/mod.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/state/mod.rs b/src/state/mod.rs index e8975e2..8f3a841 100644 --- a/src/state/mod.rs +++ b/src/state/mod.rs @@ -180,6 +180,24 @@ pub(crate) struct CatchUpSource { } impl AppState { + /// Asks the sync worker to look at `peer` (`SyncEvent::PeerNeedsSync`): whether to + /// send it a sync message now. Nothing if the worker is gone (the node stops). + pub(crate) fn request_sync(&self, peer: &str) { + let _ = self + .sync_events + .send(SyncEvent::PeerNeedsSync(peer.to_owned())); + } + + /// `request_sync`, after `delay`. + pub(crate) fn request_sync_after(&self, peer: &str, delay: std::time::Duration) { + let events = self.sync_events.clone(); + let peer = peer.to_owned(); + tokio::spawn(async move { + tokio::time::sleep(delay).await; + let _ = events.send(SyncEvent::PeerNeedsSync(peer)); + }); + } + /// Whether the node shuts down (`closing`). pub(crate) fn is_closing(&self) -> bool { *self.closing.borrow() |
