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