use std::path::PathBuf;
use crate::common::stored_bitslice::StoredBitSlice;
use crate::common::universal_io::UniversalRead;
use roaring::RoaringBitmap;
use super::dynamic_stored_flags::{FLAGS_FILE, status_file};
use super::roaring_flags::RoaringFlagsRead;
use crate::segment::common::operation_error::OperationResult;
pub struct ReadOnlyRoaringFlags<S: UniversalRead> {
bitmap: RoaringBitmap,
len: usize,
flags_storage: StoredBitSlice<S>,
directory: PathBuf,
}
impl<S: UniversalRead> RoaringFlagsRead for ReadOnlyRoaringFlags<S> {
fn len(&self) -> usize {
self.len
}
fn get_bitmap(&self) -> &RoaringBitmap {
&self.bitmap
}
fn populate(&self) -> OperationResult<()> {
self.flags_storage.populate()?;
Ok(())
}
fn clear_cache(&self) -> OperationResult<()> {
self.flags_storage.clear_ram_cache()?;
Ok(())
}
fn files(&self) -> Vec<PathBuf> {
vec![
status_file(&self.directory),
self.directory.join(FLAGS_FILE),
]
}
}