dis_rs/common/repair_complete/
model.rs

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