42
mini-lsm-starter/src/manifest.rs
Normal file
42
mini-lsm-starter/src/manifest.rs
Normal file
@@ -0,0 +1,42 @@
|
||||
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<Mutex<File>>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub enum ManifestRecord {
|
||||
Flush(usize),
|
||||
NewMemtable(usize),
|
||||
Compaction(CompactionTask, Vec<usize>),
|
||||
}
|
||||
|
||||
impl Manifest {
|
||||
pub fn create(path: impl AsRef<Path>) -> Result<Self> {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
pub fn recover(path: impl AsRef<Path>) -> Result<(Self, Vec<ManifestRecord>)> {
|
||||
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!()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user