dis_rs/common/acknowledge/
model.rs1use crate::common::acknowledge::builder::AcknowledgeBuilder;
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_BODY_LENGTH: u16 = 20;
9
10#[derive(Clone, Debug, Default, PartialEq)]
14#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
15pub struct Acknowledge {
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 Acknowledge {
24 #[must_use]
25 pub fn builder() -> AcknowledgeBuilder {
26 AcknowledgeBuilder::new()
27 }
28
29 #[must_use]
30 pub fn into_builder(self) -> AcknowledgeBuilder {
31 AcknowledgeBuilder::new_from_body(self)
32 }
33
34 #[must_use]
35 pub fn into_pdu_body(self) -> PduBody {
36 PduBody::Acknowledge(self)
37 }
38}
39
40impl BodyInfo for Acknowledge {
41 fn body_length(&self) -> u16 {
42 ACKNOWLEDGE_BODY_LENGTH
43 }
44
45 fn body_type(&self) -> PduType {
46 PduType::Acknowledge
47 }
48}
49
50impl Interaction for Acknowledge {
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}