Skip to main content

flowparser_sflow/counter_records/
queue_length.rs

1use nom::IResult;
2use nom::number::complete::be_u32;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6pub struct QueueLength {
7    pub queue_index: u32,
8    pub segment_size: u32,
9    pub queue_segments: u32,
10    pub queue_length_0: u32,
11    pub queue_length_1: u32,
12    pub queue_length_2: u32,
13    pub queue_length_4: u32,
14    pub queue_length_8: u32,
15    pub queue_length_32: u32,
16    pub queue_length_128: u32,
17    pub queue_length_1024: u32,
18    pub queue_length_more: u32,
19    pub dropped: u32,
20}
21
22pub(crate) fn parse_queue_length(input: &[u8]) -> IResult<&[u8], QueueLength> {
23    let (input, queue_index) = be_u32(input)?;
24    let (input, segment_size) = be_u32(input)?;
25    let (input, queue_segments) = be_u32(input)?;
26    let (input, queue_length_0) = be_u32(input)?;
27    let (input, queue_length_1) = be_u32(input)?;
28    let (input, queue_length_2) = be_u32(input)?;
29    let (input, queue_length_4) = be_u32(input)?;
30    let (input, queue_length_8) = be_u32(input)?;
31    let (input, queue_length_32) = be_u32(input)?;
32    let (input, queue_length_128) = be_u32(input)?;
33    let (input, queue_length_1024) = be_u32(input)?;
34    let (input, queue_length_more) = be_u32(input)?;
35    let (input, dropped) = be_u32(input)?;
36
37    Ok((
38        input,
39        QueueLength {
40            queue_index,
41            segment_size,
42            queue_segments,
43            queue_length_0,
44            queue_length_1,
45            queue_length_2,
46            queue_length_4,
47            queue_length_8,
48            queue_length_32,
49            queue_length_128,
50            queue_length_1024,
51            queue_length_more,
52            dropped,
53        },
54    ))
55}