use super::simulation_address_record::SimulationAddressRecord;
use bytes::{BytesMut, BufMut, Buf};
use serde::{Serialize, Deserialize};
#[derive(Copy, Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct EntityIDRecord {
pub simulation_address_record: SimulationAddressRecord,
pub entity_identifier_field: u16
}
impl EntityIDRecord {
pub fn new(site_identifier_field: u16, application_identifier_field: u16, entity_identifier_field: u16) -> Self {
if entity_identifier_field == 0 {
println!("Invalid entity identifier field! - cannot be 0"); }
EntityIDRecord {
simulation_address_record: SimulationAddressRecord::new(site_identifier_field, application_identifier_field),
entity_identifier_field
}
}
pub fn default(entity_identifier: u16) -> Self {
if entity_identifier == 0 {
println!("Invalid entity identifier field! - cannot be 0"); }
EntityIDRecord {
simulation_address_record: SimulationAddressRecord::default(),
entity_identifier_field: entity_identifier
}
}
pub fn serialize(&self, buf: &mut BytesMut) {
self.simulation_address_record.serialize(buf);
buf.put_u16(self.entity_identifier_field);
}
pub fn decode(buf: &mut BytesMut) -> EntityIDRecord {
EntityIDRecord {
simulation_address_record: EntityIDRecord::decode_simulation_address(buf),
entity_identifier_field: buf.get_u16()
}
}
fn decode_simulation_address(buf: &mut BytesMut) -> SimulationAddressRecord {
SimulationAddressRecord {
site_identifier_field: buf.get_u16(),
application_identifier_field: buf.get_u16()
}
}
}