#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct FrameHeader {
pub magic: u32,
pub version: u16,
pub msg_type: u8,
pub flags: u8,
pub request_id: u64,
pub payload_length: u32,
}
impl FrameHeader {
pub const SIZE: usize = 20;
}
#[derive(Debug)]
pub struct Frame<'a> {
pub header: FrameHeader,
pub payload: &'a [u8],
}
#[derive(Debug)]
pub struct OwnedFrame {
pub header: FrameHeader,
pub payload: Vec<u8>,
}
impl OwnedFrame {
#[must_use]
#[inline]
pub fn as_borrowed(&self) -> Frame<'_> {
Frame {
header: self.header,
payload: &self.payload,
}
}
}