mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 14:01:02 +00:00
Name all the tasks! (#6726)
* Remove any implementation of `Spawn` or `Executor` from our task executors * Fix compilation * Rename `SpawnBlockingExecutor` * Update primitives/core/src/traits.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Fix tests Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
This commit is contained in:
@@ -352,26 +352,21 @@ impl CallInWasmExt {
|
||||
}
|
||||
}
|
||||
|
||||
/// Something that can spawn tasks and also can be cloned.
|
||||
pub trait CloneableSpawn: futures::task::Spawn + Send + Sync {
|
||||
/// Clone as heap-allocated handle.
|
||||
fn clone(&self) -> Box<dyn CloneableSpawn>;
|
||||
}
|
||||
|
||||
sp_externalities::decl_extension! {
|
||||
/// Task executor extension.
|
||||
pub struct TaskExecutorExt(Box<dyn CloneableSpawn>);
|
||||
pub struct TaskExecutorExt(Box<dyn SpawnNamed>);
|
||||
}
|
||||
|
||||
impl TaskExecutorExt {
|
||||
/// New instance of task executor extension.
|
||||
pub fn new(spawn_handle: Box<dyn CloneableSpawn>) -> Self {
|
||||
Self(spawn_handle)
|
||||
pub fn new(spawn_handle: impl SpawnNamed + Send + 'static) -> Self {
|
||||
Self(Box::new(spawn_handle))
|
||||
}
|
||||
}
|
||||
|
||||
/// Something that can spawn futures (blocking and non-blocking) with am assigned name.
|
||||
pub trait SpawnNamed {
|
||||
/// Something that can spawn futures (blocking and non-blocking) with an assigned name.
|
||||
#[dyn_clonable::clonable]
|
||||
pub trait SpawnNamed: Clone + Send + Sync {
|
||||
/// Spawn the given blocking future.
|
||||
///
|
||||
/// The given `name` is used to identify the future in tracing.
|
||||
@@ -381,3 +376,13 @@ pub trait SpawnNamed {
|
||||
/// The given `name` is used to identify the future in tracing.
|
||||
fn spawn(&self, name: &'static str, future: futures::future::BoxFuture<'static, ()>);
|
||||
}
|
||||
|
||||
impl SpawnNamed for Box<dyn SpawnNamed> {
|
||||
fn spawn_blocking(&self, name: &'static str, future: futures::future::BoxFuture<'static, ()>) {
|
||||
(**self).spawn_blocking(name, future)
|
||||
}
|
||||
|
||||
fn spawn(&self, name: &'static str, future: futures::future::BoxFuture<'static, ()>) {
|
||||
(**self).spawn(name, future)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user