parent
e2eee6beb1
commit
503aff9997
@ -0,0 +1,50 @@
|
||||
use super::*;
|
||||
|
||||
bitflags!{
|
||||
/// What to remove when using `Store::clean()`.
|
||||
pub struct StoreCleanFlags: u32
|
||||
{
|
||||
/// Dead entry hash (key) mappings.
|
||||
const MAP = 1 << 0;
|
||||
/// Dead `tag -> entry hash` mappings.
|
||||
const TAG_MAP = 1 << 1;
|
||||
/// Dead tags (i.e. tags with no entries).
|
||||
const TAGS = 1 << 2;
|
||||
/// Dead entries (i.e. Inaccessable, corrupt, or missing file entries).
|
||||
const ENTRY = 1 << 3;
|
||||
|
||||
/// Clean all
|
||||
const ALL = (1 << 4)-1;
|
||||
|
||||
}
|
||||
}
|
||||
impl Default for StoreCleanFlags
|
||||
{
|
||||
#[inline]
|
||||
fn default() -> Self
|
||||
{
|
||||
Self::MAP | Self::TAG_MAP | Self::TAGS
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Refresh and cleaning
|
||||
impl Store
|
||||
{
|
||||
/// Remove any and all dead mappings / entries specified by the flags here.
|
||||
///
|
||||
/// Pass `Default::default()` to only clean *mappings*, and not dead entries. Otherwise, `StoreCleanFlags::ALL` will perform a full audit.
|
||||
/// See [`StoreCleanFlags`] for other options.
|
||||
pub fn clean(&mut self, what: StoreCleanFlags)
|
||||
{
|
||||
todo!("What order do we do `what`'s things in?")
|
||||
}
|
||||
/// Force a full rebuild of all mappings.
|
||||
///
|
||||
/// The clears the entire store except entries (and entry specific caches), and then rebuilds all the internal mappings from scratch. Any cached mappings (e.g empty tag reserves) are removed.
|
||||
/// This does not remove invalid entries themselves, for that use `clean(StoreCleanFlags::ENTRY)`.
|
||||
pub fn rebuild(&mut self)
|
||||
{
|
||||
todo!()
|
||||
}
|
||||
}
|
Loading…
Reference in new issue