use fuser::FileHandle;
use std::collections::HashMap;
pub struct HandleTable {
next_fh: u64,
handles: HashMap<u64, std::fs::File>,
}
impl HandleTable {
pub fn new() -> Self {
Self {
next_fh: 1,
handles: HashMap::new(),
}
}
pub fn insert(&mut self, file: std::fs::File) -> FileHandle {
let fh = self.next_fh;
self.next_fh += 1;
self.handles.insert(fh, file);
FileHandle(fh)
}
pub fn get(&self, fh: FileHandle) -> Option<&std::fs::File> {
self.handles.get(&fh.0)
}
pub fn remove(&mut self, fh: FileHandle) {
self.handles.remove(&fh.0);
}
}
impl Default for HandleTable {
fn default() -> Self {
Self::new()
}
}