pub struct CacheEntry {
pub data: Vec<u8>,
pub warm: bool,
pub sync: bool,
handles: u32,
}
impl CacheEntry {
pub fn new() -> CacheEntry {
CacheEntry {
data: Vec::new(),
warm: false,
sync: false,
handles: 0,
}
}
pub fn set<I: Into<Vec<u8>>>(&mut self, data: I) {
self.sync = false;
self.warm = true;
self.data = data.into();
}
pub fn write(&mut self, offset: u64, data: &[u8]) {
self.sync = false;
self.warm = true;
let end = offset as usize + data.len();
self.data.resize(end, 0);
println!("write(offset={}, data.len={}, end={})", offset, data.len(), end);
self.data[(offset as usize)..end].copy_from_slice(data);
}
pub fn released(&mut self) -> u32 {
self.handles = self.handles - 1;
self.handles
}
pub fn opened(&mut self) -> u32 {
self.handles = self.handles + 1;
self.handles
}
}