use super::thread_pool_state::ThreadPoolState;
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub struct ThreadPoolStats {
pub core_pool_size: usize,
pub maximum_pool_size: usize,
pub live_workers: usize,
pub idle_workers: usize,
pub queued_tasks: usize,
pub running_tasks: usize,
pub submitted_tasks: usize,
pub completed_tasks: usize,
pub cancelled_tasks: usize,
pub shutdown: bool,
pub terminated: bool,
}
impl ThreadPoolStats {
pub(super) fn new(state: &ThreadPoolState) -> Self {
Self {
core_pool_size: state.core_pool_size,
maximum_pool_size: state.maximum_pool_size,
live_workers: state.live_workers,
idle_workers: state.idle_workers,
queued_tasks: state.queued_tasks,
running_tasks: state.running_tasks,
submitted_tasks: state.submitted_tasks,
completed_tasks: state.completed_tasks,
cancelled_tasks: state.cancelled_tasks,
shutdown: !state.lifecycle.is_running(),
terminated: state.is_terminated(),
}
}
}