in src/data/netstat.rs [120:157]
fn process_raw_data(&mut self, buffer: Data) -> Result<ProcessedData> {
let raw_value = match buffer {
Data::NetstatRaw(ref value) => value,
_ => panic!("Invalid Data type in raw file"),
};
let mut netstat = Netstat::new();
let reader = BufReader::new(raw_value.data.as_bytes());
let mut map: HashMap<String, u64> = HashMap::new();
let mut lines = reader.lines();
while let (Some(line1), Some(line2)) = (lines.next(), lines.next()) {
let binding = line1.unwrap();
let params: Vec<&str> = binding.split_whitespace().collect();
let binding = line2.unwrap();
let values: Vec<&str> = binding.split_whitespace().collect();
if params.len() != values.len() {
panic!("Parameter count should match value count!")
}
let mut param_itr = params.iter();
let mut val_itr = values.iter();
let tag = param_itr.next().unwrap().to_owned();
val_itr.next();
for param in param_itr {
let val = val_itr.next().ok_or(PDError::ProcessorOptionExtractError)?;
map.insert(tag.to_owned() + " " + param.to_owned(), val.parse::<u64>()?);
}
}
netstat.set_time(raw_value.time);
netstat.set_data(map);
let processed_data = ProcessedData::Netstat(netstat);
Ok(processed_data)
}