dis_rs/common/data_r/
writer.rs1use crate::common::{Serialize, SerializePdu, SupportedVersion};
2use crate::data_r::model::DataR;
3use bytes::{BufMut, BytesMut};
4
5impl SerializePdu for DataR {
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 buf.put_u8(self.required_reliability_service.into());
11 buf.put_u8(0u8);
12 buf.put_u16(0u16);
13 buf.put_u32(self.fixed_datum_records.len() as u32);
14 buf.put_u32(self.variable_datum_records.len() as u32);
15 let fixed_datum_bytes = self
16 .fixed_datum_records
17 .iter()
18 .map(|datum| datum.serialize(buf))
19 .sum::<u16>();
20 let variable_datum_bytes = self
21 .variable_datum_records
22 .iter()
23 .map(|datum| datum.serialize(buf))
24 .sum::<u16>();
25
26 originating_bytes + receiving_bytes + 16 + fixed_datum_bytes + variable_datum_bytes
27 }
28}