dis_rs/common/data_query/
writer.rs1use crate::common::data_query::model::DataQuery;
2use crate::common::{Serialize, SerializePdu, SupportedVersion};
3use bytes::{BufMut, BytesMut};
4
5impl SerializePdu for DataQuery {
6 fn serialize_pdu(&self, _version: SupportedVersion, buf: &mut BytesMut) -> u16 {
7 let originating_bytes = self.originating_id.serialize(buf);
8 let receiving_bytes = self.receiving_id.serialize(buf);
9 buf.put_u32(self.request_id);
10 let time_interval_bytes = self.time_interval.serialize(buf);
11 buf.put_u32(self.fixed_datum_records.len() as u32);
12 buf.put_u32(self.variable_datum_records.len() as u32);
13 let fixed_datum_bytes = self
14 .fixed_datum_records
15 .iter()
16 .map(|datum_id| {
17 buf.put_u32((*datum_id).into());
18 4
19 })
20 .sum::<u16>();
21 let variable_datum_bytes = self
22 .variable_datum_records
23 .iter()
24 .map(|datum_id| {
25 buf.put_u32((*datum_id).into());
26 4
27 })
28 .sum::<u16>();
29
30 originating_bytes
31 + receiving_bytes
32 + 4
33 + time_interval_bytes
34 + 8
35 + fixed_datum_bytes
36 + variable_datum_bytes
37 }
38}