use std::sync::Arc;
#[derive(Debug, Clone)]
pub enum StorageEvent {
CheckpointStarted {
sequence: u64,
},
CheckpointCompleted {
sequence: u64,
duration_ms: u64,
data_flushed: u64,
wal_truncated: u64,
snapshot_created: bool,
},
CheckpointFailed {
sequence: Option<u64>,
error: String,
},
WalTruncated {
up_to_lsn: u64,
},
SnapshotCreated {
sequence: u64,
},
GcRun {
reclaimed_entries: u64,
},
CompactionStarted {
space_id: u64,
},
CompactionCompleted {
space_id: u64,
reclaimed_bytes: u64,
},
}
pub const GLOBAL_COMPACTION_SPACE_ID: u64 = 0;
pub type StorageEventCallback = Arc<dyn Fn(&StorageEvent) + Send + Sync>;
pub type GcEventSink = Arc<dyn Fn(u64) + Send + Sync>;