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 | 6e0a3fc86fcd3df3d0b26469f132602c7dce9c24 (patch) | |
| tree | c335376b8ce31fe4431ca8b24e35bda827079316 /src/state/mod.rs | |
| parent | 89f41e04976a076e40183956db718d558998c0dc (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() |
