zerodds_qos/policies/
entity_factory.rs1use zerodds_cdr::{BufferReader, BufferWriter, DecodeError, EncodeError};
10
11use crate::wire_helpers::{read_bool_padded, write_bool_padded};
12
13#[derive(Debug, Clone, Copy, PartialEq, Eq)]
15pub struct EntityFactoryQosPolicy {
16 pub autoenable_created_entities: bool,
18}
19
20impl Default for EntityFactoryQosPolicy {
21 fn default() -> Self {
22 Self {
23 autoenable_created_entities: true,
24 }
25 }
26}
27
28impl EntityFactoryQosPolicy {
29 pub fn encode_into(self, w: &mut BufferWriter) -> Result<(), EncodeError> {
34 write_bool_padded(w, self.autoenable_created_entities)
35 }
36
37 pub fn decode_from(r: &mut BufferReader<'_>) -> Result<Self, DecodeError> {
42 Ok(Self {
43 autoenable_created_entities: read_bool_padded(r)?,
44 })
45 }
46}
47
48#[cfg(test)]
49#[allow(clippy::unwrap_used)]
50mod tests {
51 use super::*;
52 use zerodds_cdr::Endianness;
53
54 #[test]
55 fn default_is_true() {
56 assert!(EntityFactoryQosPolicy::default().autoenable_created_entities);
57 }
58
59 #[test]
60 fn roundtrip() {
61 for v in [true, false] {
62 let p = EntityFactoryQosPolicy {
63 autoenable_created_entities: v,
64 };
65 let mut w = BufferWriter::new(Endianness::Little);
66 p.encode_into(&mut w).unwrap();
67 let bytes = w.into_bytes();
68 let mut r = BufferReader::new(&bytes, Endianness::Little);
69 assert_eq!(EntityFactoryQosPolicy::decode_from(&mut r).unwrap(), p);
70 }
71 }
72}