#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Clone, Debug, Default)]
pub struct QueueStatistics {
event_queue_size: u64,
command_queue_size: u64,
pri_queue_size: u64,
event_queue_capacity: usize,
command_queue_capacity: usize,
pri_queue_capacity: usize,
}
impl QueueStatistics {
#[must_use]
pub const fn new(
event_queue_size: u64,
command_queue_size: u64,
pri_queue_size: u64,
event_queue_capacity: usize,
command_queue_capacity: usize,
pri_queue_capacity: usize,
) -> Self {
Self {
event_queue_size,
command_queue_size,
pri_queue_size,
event_queue_capacity,
command_queue_capacity,
pri_queue_capacity,
}
}
#[must_use]
pub const fn event_queue_size(&self) -> u64 {
self.event_queue_size
}
#[must_use]
pub const fn command_queue_size(&self) -> u64 {
self.command_queue_size
}
#[must_use]
pub const fn pri_queue_size(&self) -> u64 {
self.pri_queue_size
}
#[must_use]
#[allow(clippy::cast_precision_loss)]
pub fn event_queue_utilization(&self) -> f64 {
if self.event_queue_capacity == 0 {
0.0
} else {
self.event_queue_size as f64 / self.event_queue_capacity as f64
}
}
#[must_use]
#[allow(clippy::cast_precision_loss)]
pub fn command_queue_utilization(&self) -> f64 {
if self.command_queue_capacity == 0 {
0.0
} else {
self.command_queue_size as f64 / self.command_queue_capacity as f64
}
}
#[must_use]
#[allow(clippy::cast_precision_loss)]
pub fn pri_queue_utilization(&self) -> f64 {
if self.pri_queue_capacity == 0 {
0.0
} else {
self.pri_queue_size as f64 / self.pri_queue_capacity as f64
}
}
}