1 use super::Handle; 2 3 use crate::runtime::{SchedulerMetrics, WorkerMetrics}; 4 5 impl Handle { num_workers(&self) -> usize6 pub(crate) fn num_workers(&self) -> usize { 7 self.shared.worker_metrics.len() 8 } 9 num_blocking_threads(&self) -> usize10 pub(crate) fn num_blocking_threads(&self) -> usize { 11 // workers are currently spawned using spawn_blocking 12 self.blocking_spawner 13 .num_threads() 14 .saturating_sub(self.num_workers()) 15 } 16 num_idle_blocking_threads(&self) -> usize17 pub(crate) fn num_idle_blocking_threads(&self) -> usize { 18 self.blocking_spawner.num_idle_threads() 19 } 20 num_alive_tasks(&self) -> usize21 pub(crate) fn num_alive_tasks(&self) -> usize { 22 self.shared.owned.num_alive_tasks() 23 } 24 25 cfg_64bit_metrics! { 26 pub(crate) fn spawned_tasks_count(&self) -> u64 { 27 self.shared.owned.spawned_tasks_count() 28 } 29 } 30 scheduler_metrics(&self) -> &SchedulerMetrics31 pub(crate) fn scheduler_metrics(&self) -> &SchedulerMetrics { 32 &self.shared.scheduler_metrics 33 } 34 worker_metrics(&self, worker: usize) -> &WorkerMetrics35 pub(crate) fn worker_metrics(&self, worker: usize) -> &WorkerMetrics { 36 &self.shared.worker_metrics[worker] 37 } 38 injection_queue_depth(&self) -> usize39 pub(crate) fn injection_queue_depth(&self) -> usize { 40 self.shared.injection_queue_depth() 41 } 42 worker_local_queue_depth(&self, worker: usize) -> usize43 pub(crate) fn worker_local_queue_depth(&self, worker: usize) -> usize { 44 self.shared.worker_local_queue_depth(worker) 45 } 46 blocking_queue_depth(&self) -> usize47 pub(crate) fn blocking_queue_depth(&self) -> usize { 48 self.blocking_spawner.queue_depth() 49 } 50 } 51