use iceoryx2_bb_derive_macros::ZeroCopySend;
use iceoryx2_bb_elementary_traits::zero_copy_send::ZeroCopySend;
use crate::{
identifiers::{UniqueNodeId, UniquePublisherId},
service::header::payload_header::PayloadHeader,
};
#[derive(Debug, Copy, Clone, ZeroCopySend, PartialEq, Eq)]
#[repr(C)]
pub struct Header {
node_id: UniqueNodeId,
publisher_port_id: UniquePublisherId,
pub(crate) number_of_elements: u64,
pub(crate) payload_offset: u64,
}
impl PayloadHeader for Header {
fn node_id(&self) -> UniqueNodeId {
self.node_id
}
fn number_of_elements(&self) -> u64 {
self.number_of_elements
}
}
impl Header {
pub(crate) fn new(
node_id: UniqueNodeId,
publisher_port_id: UniquePublisherId,
number_of_elements: u64,
) -> Self {
Self {
node_id,
publisher_port_id,
number_of_elements,
payload_offset: 0,
}
}
pub fn publisher_id(&self) -> UniquePublisherId {
self.publisher_port_id
}
pub fn payload_offset(&self) -> u64 {
self.payload_offset
}
}