def measure.lookup.loop
mylsm-lsm-store@0.6.0.1 · src/ByteWal.bend:680
import mylsm-lsm-store@0.6.0.1/src/ByteWal.bend as ByteWal
import Base
import mylsm-lsm-store@0.6.0.1/src/Wal.bend as Wal
680def measure.lookup.loop(fuel: Nat, state: MeasureState)
681 -> Result<&1, &1, Wal.Error, ValueMetadata>:
682 match fuel:
683 case 0n: Fail{Wal.Malformed{}}
684 case 1n+rest:
685 match state:
686 case MeasureNext{frame, offset, remaining, progress}:
687 match remaining:
688 case 0n: measure.lookup.finish(progress, offset)
689 case 1n+more:
690 measure.lookup.loop(rest,
691 MeasureRead{more, progress,
692 record.measure.retained(frame, offset)})
693 case MeasureRead{remaining, progress, measured}:
694 measure.lookup.loop(rest,
695 measure.lookup.read(remaining, progress, measured))
696 case MeasureCompared{frame, next_offset, remaining, progress,
697 record_has_value, record_value_bytes, order}:
698 match progress:
699 case MeasureProgress{query, records_end, found, has_value,
700 value_bytes}:
701 match order:
702 case EQ{}:
703 measure.lookup.loop(rest,
704 MeasureNext{frame, next_offset, remaining,
705 MeasureProgress{query, records_end, True{},
706 record_has_value, record_value_bytes}})
707 case _:
708 measure.lookup.loop(rest,
709 MeasureNext{frame, next_offset, remaining,
710 MeasureProgress{query, records_end, found, has_value,
711 value_bytes}})
712 case MeasureFailed{error}: Fail{error}