tokio/runtime/
task_hooks.rs1use std::marker::PhantomData;
2
3impl TaskHooks {
4 pub(crate) fn spawn(&self, meta: &TaskMeta<'_>) {
5 if let Some(f) = self.task_spawn_callback.as_ref() {
6 f(meta)
7 }
8 }
9}
10
11#[derive(Clone)]
12pub(crate) struct TaskHooks {
13 pub(crate) task_spawn_callback: Option<TaskCallback>,
14 pub(crate) task_terminate_callback: Option<TaskCallback>,
15}
16
17#[allow(missing_debug_implementations)]
25#[cfg_attr(not(tokio_unstable), allow(unreachable_pub))]
26pub struct TaskMeta<'a> {
27 pub(crate) id: super::task::Id,
29 pub(crate) _phantom: PhantomData<&'a ()>,
30}
31
32impl<'a> TaskMeta<'a> {
33 #[cfg_attr(not(tokio_unstable), allow(unreachable_pub, dead_code))]
35 pub fn id(&self) -> super::task::Id {
36 self.id
37 }
38}
39
40pub(crate) type TaskCallback = std::sync::Arc<dyn Fn(&TaskMeta<'_>) + Send + Sync>;