validatePage method

PageValidationResult validatePage(
  1. Uint8List page,
  2. int expectedPageId
)

Implementation

PageValidationResult validatePage(Uint8List page, int expectedPageId) {
  bool allZero = page.every((b) => b == 0);
  if (allZero) return const PageValidationResult(PageStatus.uninitialized);

  final hdr = PageHeader.read(page);
  if (hdr == null) return const PageValidationResult(PageStatus.badMagic);

  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);
    }
  }

  if (hdr.pageId != expectedPageId) {
    return PageValidationResult(PageStatus.pageIdMismatch, hdr);
  }

  return PageValidationResult(PageStatus.ok, hdr);
}