commonware_runtime/
macros.rs1#[macro_export]
9macro_rules! spawn_metrics {
10 ($ctx:ident, future) => {
12 $crate::spawn_metrics!(
13 $crate::telemetry::metrics::task::Label::future($ctx.name.clone()),
14 @make $ctx
15 )
16 };
17
18 ($ctx:ident, blocking, $dedicated:expr) => {
20 $crate::spawn_metrics!(
21 if $dedicated {
22 $crate::telemetry::metrics::task::Label::blocking_dedicated($ctx.name.clone())
23 } else {
24 $crate::telemetry::metrics::task::Label::blocking_shared($ctx.name.clone())
25 },
26 @make $ctx
27 )
28 };
29
30 ($label:expr, @make $ctx:ident) => {{
32 let label = $label;
33 let metrics = &$ctx.executor.metrics;
34 metrics.tasks_spawned.get_or_create(&label).inc();
35 let gauge = metrics.tasks_running.get_or_create(&label).clone();
36 (label, gauge)
37 }};
38}