use crate::{
InternalError,
dto::public_status::{PublicHealth, PublicMetric, PublicMetricsRequest, PublicMetricsSnapshot},
ops::{ic::IcOps, runtime::public_metrics::PublicMetricsOps},
};
pub struct PublicMetricsWorkflow;
impl PublicMetricsWorkflow {
#[must_use]
pub fn health() -> PublicHealth {
PublicMetricsOps::health()
}
#[must_use]
pub fn read(request: PublicMetricsRequest) -> PublicMetricsSnapshot {
PublicMetricsOps::read(request)
}
pub fn record_application(metrics: Vec<PublicMetric>) -> Result<(), InternalError> {
PublicMetricsOps::record_application(metrics)
}
pub fn sample() -> Result<(), InternalError> {
let families = PublicMetricsOps::enabled();
if families.is_empty() {
return Ok(());
}
let now = IcOps::now_nanos();
for family in families {
PublicMetricsOps::sample_family(family, now)?;
}
Ok(())
}
}