use crate::config::Config; use mond_client::{make_ident, Aspect, Push, Rate, Reporter}; use std::{collections::HashMap, marker::PhantomData}; pub struct Reporting { pub request_in: Aspect>, pub request_out: Aspect>, pub hosts: HashMap, // pub connections: Aspect>, } pub struct HostReporting { pub requests_in: Aspect>, } impl Reporting { pub fn new(config: &Config) -> Self { let mut rep = Reporter::new(); Self { request_in: rep.create(make_ident!("requests-in"), Push(Rate(PhantomData::))), request_out: rep.create(make_ident!("requests-out"), Push(Rate(PhantomData::))), // connections: rep.create(make_ident!("connections"), Push()), hosts: config .hosts .iter() .map(|(k, _v)| { ( k.to_owned(), HostReporting { requests_in: rep.create( make_ident!("host", k, "request-in"), Push(Rate(PhantomData::)), ), }, ) }) .collect(), } } }