validatePage method
Implementation
PageValidationResult validatePage(Uint8List page, int expectedPageId) {
// All-zero → uninitialized
bool allZero = page.every((b) => b == 0);
if (allZero) return const PageValidationResult(PageStatus.uninitialized);
// Bad magic
final hdr = PageHeader.read(page);
if (hdr == null) return const PageValidationResult(PageStatus.badMagic);
// CRC check over payload
final storedChecksum = hdr.checksum;
if (storedChecksum != 0) {
final payloadLen =
hdr.dataLength.clamp(0, pageSize - PageHeader.size);
int computed = 0;
for (int i = PageHeader.size; i < PageHeader.size + payloadLen; i++) {
computed = (computed + page[i]) & 0xFFFFFFFF;
}
if (computed != storedChecksum) {
return PageValidationResult(PageStatus.checksumFail, hdr);
}
}
// Page ID mismatch
if (hdr.pageId != expectedPageId) {
return PageValidationResult(PageStatus.pageIdMismatch, hdr);
}
return PageValidationResult(PageStatus.ok, hdr);
}