Skip to main content

tokio_dbus/
proto.rs

1//! Low level details for the D-Bus protocol implementation.
2
3#[doc(inline)]
4pub use tokio_dbus_core::proto::{Endianness, Flags, MessageType, Type, Variant};
5
6use crate::{Frame, Signature};
7
8/// A protocol header.
9#[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);