Skip to main content

flowparser_sflow/counter_records/
host_memory.rs

1use nom::IResult;
2use nom::number::complete::{be_u32, be_u64};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6pub struct HostMemory {
7    pub mem_total: u64,
8    pub mem_free: u64,
9    pub mem_shared: u64,
10    pub mem_buffers: u64,
11    pub mem_cached: u64,
12    pub swap_total: u64,
13    pub swap_free: u64,
14    pub page_in: u32,
15    pub page_out: u32,
16    pub swap_in: u32,
17    pub swap_out: u32,
18}
19
20pub(crate) fn parse_host_memory(input: &[u8]) -> IResult<&[u8], HostMemory> {
21    let (input, mem_total) = be_u64(input)?;
22    let (input, mem_free) = be_u64(input)?;
23    let (input, mem_shared) = be_u64(input)?;
24    let (input, mem_buffers) = be_u64(input)?;
25    let (input, mem_cached) = be_u64(input)?;
26    let (input, swap_total) = be_u64(input)?;
27    let (input, swap_free) = be_u64(input)?;
28    let (input, page_in) = be_u32(input)?;
29    let (input, page_out) = be_u32(input)?;
30    let (input, swap_in) = be_u32(input)?;
31    let (input, swap_out) = be_u32(input)?;
32
33    Ok((
34        input,
35        HostMemory {
36            mem_total,
37            mem_free,
38            mem_shared,
39            mem_buffers,
40            mem_cached,
41            swap_total,
42            swap_free,
43            page_in,
44            page_out,
45            swap_in,
46            swap_out,
47        },
48    ))
49}