use crate::policy::{EvictionPolicy, LruPolicy};
use dig_store::CapsuleIdentity;
use std::sync::Arc;
pub const DEFAULT_MAX_BYTES: u64 = 1 << 30;
#[derive(Clone)]
pub struct CacheConfig {
pub max_bytes: u64,
pub policy: Arc<dyn EvictionPolicy>,
}
impl Default for CacheConfig {
fn default() -> Self {
Self {
max_bytes: DEFAULT_MAX_BYTES,
policy: Arc::new(LruPolicy),
}
}
}
impl std::fmt::Debug for CacheConfig {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("CacheConfig")
.field("max_bytes", &self.max_bytes)
.field("policy", &"<dyn EvictionPolicy>")
.finish()
}
}
#[derive(Debug, Clone, Copy, Default)]
pub struct PutOptions {
pub pinned: bool,
pub check_identity: bool,
}
#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub struct Admission {
pub evicted: Vec<CapsuleIdentity>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct CacheStats {
pub bytes_used: u64,
pub count: usize,
pub capacity: u64,
}