use serde::{Deserialize, Serialize};
use super::index_format::KvCheckpointIndexes;
pub(crate) const KV_CKPT_FORMAT_VERSION: u16 = 2;
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointManifest {
pub format_version: u16,
pub generation: u64,
pub durable_through_lsn: u64,
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointEntry {
pub key: Vec<u8>,
pub value: Vec<u8>,
pub expire_at_ms: u64,
pub surrogate: u32,
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub(crate) struct KvCheckpointFile {
pub format_version: u16,
pub entries: Vec<KvCheckpointEntry>,
pub indexes: KvCheckpointIndexes,
}