dis_rs/common/acknowledge_r/
model.rs

1use crate::acknowledge_r::builder::AcknowledgeRBuilder;
2use crate::common::model::{EntityId, PduBody};
3use crate::common::{BodyInfo, Interaction};
4use crate::enumerations::{AcknowledgeFlag, PduType, ResponseFlag};
5#[cfg(feature = "serde")]
6use serde::{Deserialize, Serialize};
7
8const ACKNOWLEDGE_R_BODY_LENGTH: u16 = 20;
9
10/// 5.12.4.5 Acknowledge-R PDU
11///
12/// 7.11.6 Acknowledge-R PDU
13#[derive(Clone, Debug, Default, PartialEq)]
14#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
15pub struct AcknowledgeR {
16    pub originating_id: EntityId,
17    pub receiving_id: EntityId,
18    pub acknowledge_flag: AcknowledgeFlag,
19    pub response_flag: ResponseFlag,
20    pub request_id: u32,
21}
22
23impl AcknowledgeR {
24    #[must_use]
25    pub fn builder() -> AcknowledgeRBuilder {
26        AcknowledgeRBuilder::new()
27    }
28
29    #[must_use]
30    pub fn into_builder(self) -> AcknowledgeRBuilder {
31        AcknowledgeRBuilder::new_from_body(self)
32    }
33
34    #[must_use]
35    pub fn into_pdu_body(self) -> PduBody {
36        PduBody::AcknowledgeR(self)
37    }
38}
39
40impl BodyInfo for AcknowledgeR {
41    fn body_length(&self) -> u16 {
42        ACKNOWLEDGE_R_BODY_LENGTH
43    }
44
45    fn body_type(&self) -> PduType {
46        PduType::AcknowledgeR
47    }
48}
49
50impl Interaction for AcknowledgeR {
51    fn originator(&self) -> Option<&EntityId> {
52        Some(&self.originating_id)
53    }
54
55    fn receiver(&self) -> Option<&EntityId> {
56        Some(&self.receiving_id)
57    }
58}