chore: add spawn_critical function to trait (#1622)

This commit is contained in:
Matthias Seitz
2023-03-03 14:12:00 +01:00
committed by GitHub
parent fbfec26a36
commit a553c1d700

View File

@ -70,6 +70,9 @@ pub trait TaskSpawner: Send + Sync + Unpin + std::fmt::Debug + DynClone {
/// Spawns the task onto the runtime.
/// See also [`Handle::spawn`].
fn spawn(&self, fut: BoxFuture<'static, ()>) -> JoinHandle<()>;
/// This spawns a critical task onto the runtime.
fn spawn_critical(&self, name: &'static str, fut: BoxFuture<'static, ()>) -> JoinHandle<()>;
}
dyn_clone::clone_trait_object!(TaskSpawner);
@ -83,6 +86,10 @@ impl TaskSpawner for TokioTaskExecutor {
fn spawn(&self, fut: BoxFuture<'static, ()>) -> JoinHandle<()> {
tokio::task::spawn(fut)
}
fn spawn_critical(&self, _name: &'static str, fut: BoxFuture<'static, ()>) -> JoinHandle<()> {
tokio::task::spawn(fut)
}
}
/// Many reth components require to spawn tasks for long-running jobs. For example `discovery`
@ -331,6 +338,10 @@ impl TaskSpawner for TaskExecutor {
fn spawn(&self, fut: BoxFuture<'static, ()>) -> JoinHandle<()> {
self.spawn(fut)
}
fn spawn_critical(&self, name: &'static str, fut: BoxFuture<'static, ()>) -> JoinHandle<()> {
TaskExecutor::spawn_critical(self, name, fut)
}
}
/// Determines how a task is spawned