You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
877 B
43 lines
877 B
use super::*;
|
|
|
|
|
|
/// An open fd that has been memory mapped.
|
|
#[derive(Debug)]
|
|
pub struct OpenMMap
|
|
{
|
|
file: File,//note: this layout matters for destruction ordering.
|
|
map: Mmap,
|
|
}
|
|
|
|
/// Provides immutable caching of a file in a data entry.
|
|
#[derive(Debug)]
|
|
pub enum DataCacheState
|
|
{
|
|
/// There is no file cache for this item.
|
|
None,
|
|
/// The file is open, we have an fd.
|
|
Open(File),
|
|
/// The file is not open, but its whole contents have been loaded into memory.
|
|
Memory(Bytes), // load from file via `BytesMut` buffer, then call `.freeze()`
|
|
/// The file is open and memory mapped.
|
|
Mapped(OpenMMap),
|
|
}
|
|
|
|
impl Default for DataCacheState
|
|
{
|
|
#[inline]
|
|
fn default() -> Self
|
|
{
|
|
Self::None
|
|
}
|
|
}
|
|
|
|
impl DataCacheState
|
|
{
|
|
/// Drop the whole cache (if there is one).
|
|
#[inline] pub fn clear(&mut self)
|
|
{
|
|
*self = Self::None;
|
|
}
|
|
}
|