def snapshot.root.get.loop

mylsm-lsm-store@0.6.0.1 · src/ByteDurableDb.bend:2934

import mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend as ByteDurableDb
import Base
import mylsm-lsm-store@0.6.0.1/src/scan/VisibleCursor.bend as VisibleCursor
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes

2934def snapshot.root.get.loop(
2935  fuel: Nat,
2936  state: SnapshotPointRead
2937) -> IO(Result<&1, &1, Error, Maybe<&1, Bytes.Bytes>>):
2938  match fuel:
2939    case 0n:
2940      match state:
2941        case SnapshotPointNeed{cursor, _}:
2942          snapshot.root.get.exhausted(cursor)
2943        case SnapshotPointStep{step, query}:
2944          snapshot.root.get.exhausted.step(query, step)
2945    case 1n+rest:
2946      match state:
2947        case SnapshotPointNeed{cursor, query}:
2948          do IO<Result<&1, &1, Error, Maybe<&1, Bytes.Bytes>>>:
2949            step : VisibleCursor.Step <- VisibleCursor.next(cursor)
2950            snapshot.root.get.loop(rest,
2951              snapshot.root.get.step(query, step))
2952        case SnapshotPointStep{step, query}:
2953          match step:
2954            case VisibleCursor.Item{entry, cursor}:
2955              snapshot.root.get.item(entry, cursor, query)
2956            case VisibleCursor.Skip{cursor}:
2957              snapshot.root.get.loop(rest,
2958                SnapshotPointNeed{cursor, query})
2959            case VisibleCursor.End{}:
2960              IO.pure(Result<&1, &1, Error, Maybe<&1, Bytes.Bytes>>,
2961                Done{None{}})
2962            case VisibleCursor.Error{(code, message)}:
2963              IO.pure(Result<&1, &1, Error, Maybe<&1, Bytes.Bytes>>,
2964                Fail{recovery.error(code, message)})

Uses (17)

Used by (1)