dis_rs/common/resupply_cancel/
model.rs

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