dis_rs/common/start_resume_r/
model.rs

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