in src/data/aperf_stats.rs [115:151]
fn get_data(
&mut self,
buffer: Vec<ProcessedData>,
query: String,
metrics: &mut DataMetrics,
) -> Result<String> {
let mut values = Vec::new();
for data in buffer {
match data {
ProcessedData::AperfStat(ref value) => values.push(value.clone()),
_ => unreachable!(),
}
}
let param: Vec<(String, String)> = serde_urlencoded::from_str(&query).unwrap();
let (_, req_str) = ¶m[1];
match req_str.as_str() {
"keys" => {
let mut names = Vec::new();
names.push("aperf".to_string());
let keys = values[0].data.keys().clone();
for k in keys {
let datatype: Vec<&str> = k.split('-').collect();
if !names.contains(&datatype[0].to_string()) {
names.push(datatype[0].to_string());
}
}
Ok(serde_json::to_string(&names)?)
}
"values" => {
let (_, key) = ¶m[2];
get_key_data(values, key.to_string(), metrics)
}
_ => panic!("Unsupported API"),
}
}