def validate.page
mylsm-lsm-store@0.6.0.1 · src/ByteSstIo.bend:73
import mylsm-lsm-store@0.6.0.1/src/ByteSstIo.bend as ByteSstIo
import Base
import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable
import mylsm-lsm-store@0.6.0.1/src/scan/ByteBlockReader.bend as ByteBlockReader
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes
73def validate.page(
74 entries: List<&1, ByteMemTable.Entry>,
75 metadata: ByteBlockReader.Metadata
76) -> ByteBlockReader.Metadata:
77 match entries:
78 case Nil{}: metadata
79 case Con{ByteMemTable.Entry{Bytes.Bytes{+key_len, _}, val}, tail}:
80 match val:
81 case None{}: validate.page(tail, metadata)
82 case Some{Bytes.Bytes{+value_len, _}}:
83 match metadata:
84 case ByteBlockReader.Metadata{size, total, block_count, index_offset,
85 live_entries, payload_bytes}:
86 validate.page(tail, ByteBlockReader.Metadata{size, total, block_count,
87 index_offset, Nat.add(live_entries, 1n),
88 Nat.add(payload_bytes, Nat.add(U32.to_nat(key_len),
89 U32.to_nat(value_len)))})