use core::fmt;
use uwheel_stats::Sketch;
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[derive(Clone, Default)]
pub struct Stats {
pub tick: Sketch,
pub interval: Sketch,
pub landmark: Sketch,
pub combine_range: Sketch,
pub combine_range_plan: Sketch,
pub exec_plan: Sketch,
pub combined_aggregation_plan: Sketch,
pub combined_aggregation: Sketch,
pub wheel_aggregation: Sketch,
pub inverse_landmark: Sketch,
}
impl core::fmt::Debug for Stats {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("HAW Stats")
.field("tick", &self.tick.percentiles())
.field("interval", &self.interval.percentiles())
.field("landmark", &self.landmark.percentiles())
.field("combine_range", &self.combine_range.percentiles())
.field("exec_plan", &self.exec_plan.percentiles())
.field("combine_range_plan", &self.combine_range_plan.percentiles())
.field(
"combined_aggregation_plan",
&self.combined_aggregation_plan.percentiles(),
)
.field(
"combined_aggregation",
&self.combined_aggregation.percentiles(),
)
.field("wheel_aggregation", &self.wheel_aggregation.percentiles())
.field("inverse_landmark", &self.inverse_landmark.percentiles())
.finish()
}
}