open_dis_rust/common/
event_id.rs1use super::simulation_address::SimulationAddress;
7
8use bytes::{Buf, BufMut, BytesMut};
9
10#[derive(Copy, Clone, Debug, Default)]
11pub struct EventId {
12 pub simulation_address: SimulationAddress,
13 pub event_identifier: u16,
14}
15
16impl EventId {
17 #[must_use]
18 pub fn new(site_identifier: u16, application_identifier: u16, event_identifier: u16) -> Self {
19 EventId {
20 simulation_address: SimulationAddress::new(site_identifier, application_identifier),
21 event_identifier,
22 }
23 }
24
25 #[must_use]
26 pub fn default(event_identifier: u16) -> Self {
27 EventId {
28 simulation_address: SimulationAddress::default(),
29 event_identifier,
30 }
31 }
32
33 pub fn serialize(&self, buf: &mut BytesMut) {
34 self.simulation_address.serialize(buf);
35 buf.put_u16(self.event_identifier);
36 }
37
38 pub fn decode(buf: &mut BytesMut) -> EventId {
39 EventId {
40 simulation_address: SimulationAddress::decode(buf),
41 event_identifier: buf.get_u16(),
42 }
43 }
44}