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