Make Service.interrupt async

This commit is contained in:
dasha_uwu
2025-08-24 02:30:47 +05:00
parent 3a1649bcaf
commit f51a7b12b5
5 changed files with 8 additions and 8 deletions

View File

@@ -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();

View File

@@ -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();

View File

@@ -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();

View File

@@ -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) {}

View File

@@ -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;
}
}
}