use std::fs::File; use std::path::Path; use std::sync::Arc; use anyhow::Result; use parking_lot::{Mutex, MutexGuard}; use serde::{Deserialize, Serialize}; use crate::compact::CompactionTask; pub struct Manifest { file: Arc>, } #[derive(Serialize, Deserialize)] pub enum ManifestRecord { Flush(usize), NewMemtable(usize), Compaction(CompactionTask, Vec), } impl Manifest { pub fn create(path: impl AsRef) -> Result { unimplemented!() } pub fn recover(path: impl AsRef) -> Result<(Self, Vec)> { unimplemented!() } pub fn add_record( &self, _state_lock_observer: &MutexGuard<()>, record: ManifestRecord, ) -> Result<()> { self.add_record_when_init(record) } pub fn add_record_when_init(&self, record: ManifestRecord) -> Result<()> { unimplemented!() } }