use std::ops::Deref;
pub trait IoctlRequestContent {
fn get_bin_size(&self) -> u32;
}
impl IoctlRequestContent for () {
fn get_bin_size(&self) -> u32 {
0
}
}
#[binrw::binrw]
#[derive(Debug, PartialEq, Eq)]
pub struct IoctlBuffer {
#[br(parse_with = binrw::helpers::until_eof)]
buffer: Vec<u8>,
}
impl From<Vec<u8>> for IoctlBuffer {
fn from(buffer: Vec<u8>) -> Self {
Self { buffer }
}
}
impl From<&[u8]> for IoctlBuffer {
fn from(buffer: &[u8]) -> Self {
Self {
buffer: buffer.to_vec(),
}
}
}
impl IoctlRequestContent for IoctlBuffer {
fn get_bin_size(&self) -> u32 {
self.len() as u32
}
}
impl Deref for IoctlBuffer {
type Target = Vec<u8>;
fn deref(&self) -> &Self::Target {
&self.buffer
}
}