def decision.step

mylsm-lsm-store@0.6.0.1 · src/scan/VisibleCursor.bend:241

import mylsm-lsm-store@0.6.0.1/src/scan/VisibleCursor.bend as VisibleCursor
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/RangeCursor.bend as RangeCursor
import mylsm-lsm-store@0.6.0.1/src/scan/ScanMerge.bend as ScanMerge
import mylsm-lsm-store@0.6.0.1/src/scan/SstCursor.bend as SstCursor

241def decision.step(
242  decision: ScanMerge.Decision,
243  base: Maybe<&1, SstCursor.Cursor>,
244  base_entry: ByteMemTable.Entry,
245  delta_entry: ByteMemTable.Entry,
246  delta_tail: List<&1, ByteMemTable.Entry>,
247  bounds: RangeCursor.Bounds
248) -> Step:
249  match decision:
250    case ScanMerge.EmitDelta{}:
251      delta.output(delta_entry, base, Some{base_entry}, delta_tail, bounds)
252    case ScanMerge.EmitBase{}:
253      match base:
254        case Some{cursor}:
255          Item{base_entry, Active{Some{cursor}, None{},
256            Con{delta_entry, delta_tail}, bounds, None{}}}
257        case None{}: End{}
258    case ScanMerge.EmitBoth{}:
259      delta.output(delta_entry, base, None{}, delta_tail, bounds)
260    case ScanMerge.SkipDelta{}:
261      Skip{Active{base, Some{base_entry}, delta_tail, bounds, None{}}}
262    case ScanMerge.SkipBoth{}:
263      Skip{Active{base, None{}, delta_tail, bounds, None{}}}
264    case ScanMerge.Finished{}: End{}

Uses (9)

Used by (1)