aboutsummaryrefslogtreecommitdiffstats
path: root/src/state/mod.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-31 04:48:00 +0100
committertv <tv@krebsco.de>2026-10-31 04:48:00 +0100
commit6e0a3fc86fcd3df3d0b26469f132602c7dce9c24 (patch)
treec335376b8ce31fe4431ca8b24e35bda827079316 /src/state/mod.rs
parent89f41e04976a076e40183956db718d558998c0dc (diff)
unify request_sync logic
Diffstat (limited to 'src/state/mod.rs')
-rw-r--r--src/state/mod.rs18
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()