1#[doc(inline)]
4pub use tokio_dbus_core::proto::{Endianness, Flags, MessageType, Type, Variant};
5
6use crate::{Frame, Signature};
7
8#[derive(Debug, Clone, Copy)]
10#[repr(C)]
11pub(crate) struct Header {
12 pub(crate) endianness: Endianness,
13 pub(crate) message_type: MessageType,
14 pub(crate) flags: Flags,
15 pub(crate) version: u8,
16 pub(crate) body_length: u32,
17 pub(crate) serial: u32,
18}
19
20impl crate::frame::sealed::Sealed for Header {}
21
22unsafe impl Frame for Header {
23 const SIGNATURE: &'static Signature = Signature::new_const(b"yyyyuu");
24
25 fn adjust(&mut self, endianness: Endianness) {
26 self.body_length.adjust(endianness);
27 self.serial.adjust(endianness);
28 }
29}
30
31impl_traits_for_frame!(Header);
32
33implement_remote!(u8, Variant, Endianness, MessageType, Flags, Type);