From f51a7b12b5319fe4f038217055bc0cf42e247ed6 Mon Sep 17 00:00:00 2001 From: dasha_uwu Date: Sun, 24 Aug 2025 02:30:47 +0500 Subject: [PATCH] Make Service.interrupt async --- src/service/admin/mod.rs | 4 ++-- src/service/presence/mod.rs | 2 +- src/service/sending/mod.rs | 2 +- src/service/service.rs | 2 +- src/service/services.rs | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/service/admin/mod.rs b/src/service/admin/mod.rs index 588ce1e3..c10ba25a 100644 --- a/src/service/admin/mod.rs +++ b/src/service/admin/mod.rs @@ -100,13 +100,13 @@ impl crate::Service for Service { } //TODO: not unwind safe - self.interrupt(); + self.interrupt().await; self.console_auto_stop().await; Ok(()) } - fn interrupt(&self) { + async fn interrupt(&self) { #[cfg(feature = "console")] self.console.interrupt(); diff --git a/src/service/presence/mod.rs b/src/service/presence/mod.rs index d076ffe3..a4aea908 100644 --- a/src/service/presence/mod.rs +++ b/src/service/presence/mod.rs @@ -61,7 +61,7 @@ impl crate::Service for Service { Ok(()) } - fn interrupt(&self) { + async fn interrupt(&self) { let (timer_sender, _) = &self.timer_channel; if !timer_sender.is_closed() { timer_sender.close(); diff --git a/src/service/sending/mod.rs b/src/service/sending/mod.rs index 1ea66102..db729d8e 100644 --- a/src/service/sending/mod.rs +++ b/src/service/sending/mod.rs @@ -106,7 +106,7 @@ impl crate::Service for Service { Ok(()) } - fn interrupt(&self) { + async fn interrupt(&self) { for (sender, _) in &self.channels { if !sender.is_closed() { sender.close(); diff --git a/src/service/service.rs b/src/service/service.rs index 1c2adc94..a8fbf5ca 100644 --- a/src/service/service.rs +++ b/src/service/service.rs @@ -24,7 +24,7 @@ pub(crate) trait Service: Any + Send + Sync { /// Interrupt the service. This is sent to initiate a graceful shutdown. /// The service worker should return from its work loop. - fn interrupt(&self) {} + async fn interrupt(&self) {} /// Clear any caches or similar runtime state. async fn clear_cache(&self) {} diff --git a/src/service/services.rs b/src/service/services.rs index 70c27558..1edbb817 100644 --- a/src/service/services.rs +++ b/src/service/services.rs @@ -186,7 +186,7 @@ impl Services { .await; } - self.interrupt(); + self.interrupt().await; if let Some(manager) = self.manager.lock().await.as_ref() { manager.stop().await; } @@ -263,12 +263,12 @@ impl Services { .await } - fn interrupt(&self) { + async fn interrupt(&self) { debug!("Interrupting services..."); for service in self.services() { let name = service.name(); trace!("Interrupting {name}"); - service.interrupt(); + service.interrupt().await; } } }