in src/data/netstat.rs [77:111]
fn get_entry(values: Vec<Netstat>, key: String, metrics: &mut DataMetrics) -> Result<String> {
let mut end_values = Vec::new();
let mut metric = Metric::new(key.clone());
let mut metadata = GraphMetadata::new();
let time_zero = values[0].time;
let mut prev_netstat = values[0].clone();
for value in values {
let current_netstat = value.clone();
let current_time = current_netstat.time;
let curr_data = current_netstat.netstat_data.clone();
let curr_value = curr_data
.get(&key)
.ok_or(PDError::VisualizerNetstatValueGetError(key.to_string()))?;
let prev_data = prev_netstat.netstat_data.clone();
let prev_value = prev_data
.get(&key)
.ok_or(PDError::VisualizerNetstatValueGetError(key.to_string()))?;
let netstat_entry = NetstatEntry {
time: (current_time - time_zero),
value: *curr_value - *prev_value,
};
metric.insert_value(netstat_entry.value as f64);
metadata.update_limits(GraphLimitType::UInt64(netstat_entry.value));
end_values.push(netstat_entry);
prev_netstat = value.clone();
}
let netdata = EndNetData {
data: end_values,
metadata,
};
add_metrics(key, &mut metric, metrics, NETSTAT_FILE_NAME.to_string())?;
Ok(serde_json::to_string(&netdata)?)
}