1use anyhow::{anyhow, Result};
6use memory_metrics_registry::cobalt_registry;
7
8use fidl_fuchsia_metrics as fmetrics;
9
10mod buckets;
11mod stalls;
12
13pub use buckets::collect_metrics_forever;
14pub use stalls::collect_stalls_forever;
15
16fn error_from_metrics_error(error: fmetrics::Error) -> anyhow::Error {
17 anyhow!("{:?}", error)
18}
19
20pub async fn create_metric_event_logger(
23 factory: fmetrics::MetricEventLoggerFactoryProxy,
24) -> Result<fmetrics::MetricEventLoggerProxy> {
25 let project_spec = fmetrics::ProjectSpec {
26 customer_id: Some(cobalt_registry::CUSTOMER_ID),
27 project_id: Some(cobalt_registry::PROJECT_ID),
28 ..Default::default()
29 };
30 let (metric_event_logger, server_end) = fidl::endpoints::create_proxy();
31 factory
32 .create_metric_event_logger(&project_spec, server_end)
33 .await?
34 .map_err(error_from_metrics_error)?;
35 Ok(metric_event_logger)
36}