fn get_data()

in src/data/perf_stat.rs [542:569]


    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::PerfStat(ref value) => values.push(value.clone()),
                _ => unreachable!(),
            }
        }
        let param: Vec<(String, String)> = serde_urlencoded::from_str(&query).unwrap();
        if param.len() < 2 {
            panic!("Not enough arguments");
        }
        let (_, req_str) = &param[1];

        match req_str.as_str() {
            "keys" => get_named_events(values[0].clone()),
            "values" => {
                let (_, key) = &param[2];
                get_values(values, key.to_string(), metrics)
            }
            _ => panic!("Unsupported API"),
        }
    }