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

Uses (7)

Used by (1)