use serde::{Deserialize, Serialize};
#[derive(Clone, Debug)]
pub struct CacheEntry<T> {
pub value: T,
}
impl<T> CacheEntry<T> {
pub fn new(value: T) -> Self {
CacheEntry { value }
}
}
#[derive(PartialEq, Eq, Debug, Clone)]
pub enum Operation {
Put,
Get,
Remove,
}
impl Operation {
pub fn to_int(&self) -> i8 {
match self {
Self::Get => 0,
Self::Put => 1,
Self::Remove => 2,
}
}
pub fn from_int(i: u8) -> Self {
if i == 0 {
Self::Get
} else if i == 1 {
Self::Put
} else if i == 2 {
Self::Remove
} else {
panic!("Invalid integer {:?}", i);
}
}
}
#[derive(Clone)]
pub struct AOFRecord<K, V>
where
for<'de> K: Deserialize<'de> + Serialize,
for<'de> V: Deserialize<'de> + Serialize,
{
pub key: K,
pub value: Option<V>,
pub operation: Operation,
}