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}

Uses (11)

Used by (1)