Skip to content

Commit b7759f9

Browse files
committed
fix serialization issues
1 parent 7b7831c commit b7759f9

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/mgmt.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use p4rs::{Pipeline, TableEntry};
44
use serde::{Deserialize, Serialize};
55
use slog::Logger;
6-
use std::collections::{BTreeMap, HashMap};
6+
use std::collections::BTreeMap;
77
use std::fs::OpenOptions;
88
use std::io::{Read, Write};
99
use std::os::unix::io::AsRawFd;
@@ -27,7 +27,13 @@ pub enum ManagementRequest {
2727
pub enum ManagementResponse {
2828
RadixResponse(u16),
2929
DumpResponse(BTreeMap<String, Vec<TableEntry>>),
30-
TableCountersResponse(Option<HashMap<Vec<u8>, u128>>),
30+
TableCountersResponse(Option<Vec<TableCounter>>),
31+
}
32+
33+
#[derive(Debug, Serialize, Deserialize)]
34+
pub struct TableCounter {
35+
pub key: Vec<u8>,
36+
pub value: u128,
3137
}
3238

3339
#[derive(Debug, Default, Serialize, Deserialize)]
@@ -76,7 +82,14 @@ pub async fn handle_management_message(
7682
let response = match pl.get_table_counters(&tc.table) {
7783
None => ManagementResponse::TableCountersResponse(None),
7884
Some(counters) => {
79-
let entries = counters.entries.lock().unwrap().clone();
85+
let entries = counters
86+
.entries
87+
.lock()
88+
.unwrap()
89+
.clone()
90+
.into_iter()
91+
.map(|(k, v)| TableCounter { key: k, value: v })
92+
.collect();
8093
ManagementResponse::TableCountersResponse(Some(entries))
8194
}
8295
};

0 commit comments

Comments
 (0)