use crate::format::prologue::Prologue;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ValidationReport {
format_version: (u16, u16),
feature_flags: u64,
frame_count: u64,
file_size: u64,
last_good_offset: u64,
incomplete_tail: bool,
}
impl ValidationReport {
pub fn format_version(&self) -> (u16, u16) {
self.format_version
}
pub fn feature_flags(&self) -> u64 {
self.feature_flags
}
pub fn frame_count(&self) -> u64 {
self.frame_count
}
pub fn file_size(&self) -> u64 {
self.file_size
}
pub fn last_good_offset(&self) -> u64 {
self.last_good_offset
}
pub fn incomplete_tail(&self) -> bool {
self.incomplete_tail
}
pub(crate) fn complete(prologue: Prologue, frame_count: u64, file_size: u64) -> Self {
Self {
format_version: prologue.format_version,
feature_flags: prologue.feature_flags,
frame_count,
file_size,
last_good_offset: file_size,
incomplete_tail: false,
}
}
pub(crate) fn from_snapshot(
format_version: (u16, u16),
feature_flags: u64,
frame_count: u64,
file_size: u64,
last_good_offset: u64,
incomplete_tail: bool,
) -> Self {
Self {
format_version,
feature_flags,
frame_count,
file_size,
last_good_offset,
incomplete_tail,
}
}
pub(crate) fn with_incomplete_tail(
prologue: Prologue,
frame_count: u64,
file_size: u64,
last_good_offset: u64,
) -> Self {
Self {
format_version: prologue.format_version,
feature_flags: prologue.feature_flags,
frame_count,
file_size,
last_good_offset,
incomplete_tail: true,
}
}
}