use linkrs_core::types::Timestamp;
use linkrs_core::wal::types::{Lsn, WalHeader};
#[derive(Debug, Default, Clone)]
pub struct RecoveryResult {
pub all_entries: Vec<ParsedWalEntry>,
pub last_timestamp: Timestamp,
pub last_lsn: Lsn,
pub corrupted_count: usize,
pub skipped_count: usize,
}
#[derive(Debug, Clone)]
pub struct ParsedWalEntry {
pub header: WalHeader,
pub payload: Vec<u8>,
pub checksum_valid: bool,
pub offset: usize,
pub lsn: Lsn,
pub prev_lsn: Lsn,
pub file_start_lsn: Lsn,
}
pub struct WalEntryIter<'a> {
entries: std::slice::Iter<'a, ParsedWalEntry>,
}
impl<'a> WalEntryIter<'a> {
pub(super) fn new(entries: &'a [ParsedWalEntry]) -> Self {
Self {
entries: entries.iter(),
}
}
}
impl<'a> Iterator for WalEntryIter<'a> {
type Item = &'a ParsedWalEntry;
fn next(&mut self) -> Option<Self::Item> {
self.entries.next()
}
}