use async_trait::async_trait;
use bytes::Bytes;
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum FillHint {
Demand,
Prefetch,
}
#[derive(Clone, Copy, Debug, Default)]
pub struct BackendDiskStats {
pub write_bytes: u64,
pub read_bytes: u64,
pub write_ios: u64,
pub read_ios: u64,
}
#[async_trait]
pub trait RangeCacheBackend: Send + Sync {
async fn get(&self, key: &str) -> Option<Bytes>;
async fn put(&self, key: String, value: Bytes, hint: FillHint);
fn disk_stats(&self) -> Option<BackendDiskStats> {
None
}
}