use super::fsm::{MetricsAggregatorEvent, MetricsAggregatorState};
use crate::supervised_base::{HandleError, StandardHandle, SupervisorHandle};
pub type MetricsHandle = StandardHandle<MetricsAggregatorEvent, MetricsAggregatorState>;
pub trait MetricsHandleExt {
fn export_metrics(&self) -> impl std::future::Future<Output = Result<(), HandleError>> + Send;
fn start_draining(&self) -> impl std::future::Future<Output = Result<(), HandleError>> + Send;
}
impl MetricsHandleExt for MetricsHandle {
async fn export_metrics(&self) -> Result<(), HandleError> {
self.send_event(MetricsAggregatorEvent::ExportMetrics).await
}
async fn start_draining(&self) -> Result<(), HandleError> {
self.send_event(MetricsAggregatorEvent::StartDraining).await
}
}