dis_rs/common/acknowledge_r/
model.rs1use 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#[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}