use std::mem::align_of;
use crate::ll::fuse_abi as abi;
use crate::session::MAX_WRITE_SIZE;
const BUFFER_SIZE: usize = MAX_WRITE_SIZE + 4096;
#[derive(Debug)]
pub(crate) struct FuseReadBuf {
buffer: Vec<u8>,
}
impl FuseReadBuf {
pub(crate) fn new() -> Self {
Self {
buffer: vec![0; BUFFER_SIZE],
}
}
pub(crate) fn as_mut(&mut self) -> &mut [u8] {
let alignment = align_of::<abi::fuse_in_header>();
let off = alignment - (self.buffer.as_ptr() as usize) % alignment;
if off == alignment {
&mut self.buffer
} else {
&mut self.buffer[off..]
}
}
}