Skip to main content

flowparser_sflow/flow_records/
app_operation.rs

1use nom::IResult;
2use nom::number::complete::{be_u32, be_u64};
3use serde::{Deserialize, Serialize};
4
5use super::parse_sflow_string;
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8pub struct AppOperation {
9    pub context: String,
10    pub status_descr: String,
11    pub req_bytes: u64,
12    pub resp_bytes: u64,
13    pub duration_us: u32,
14    pub status: u32,
15}
16
17pub(crate) fn parse_app_operation(input: &[u8]) -> IResult<&[u8], AppOperation> {
18    let (input, context) = parse_sflow_string(input)?;
19    let (input, status_descr) = parse_sflow_string(input)?;
20    let (input, req_bytes) = be_u64(input)?;
21    let (input, resp_bytes) = be_u64(input)?;
22    let (input, duration_us) = be_u32(input)?;
23    let (input, status) = be_u32(input)?;
24
25    Ok((
26        input,
27        AppOperation {
28            context,
29            status_descr,
30            req_bytes,
31            resp_bytes,
32            duration_us,
33            status,
34        },
35    ))
36}