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