ByteDurableDb.get.sst.loop: def of mylsm-lsm-store@0.6.0.1 Import: import mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend as ByteDurableDb Lines 1124-1167 of mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend: https://jend.leeeet.dev/read.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend&start_line=1124&end_line=1167 import Base import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable import mylsm-lsm-store@0.6.0.1/src/DbLock.bend as DbLock import mylsm-lsm-store@0.6.0.1/src/scan/SstCursor.bend as SstCursor import mylsm-lsm-store@0.6.0.1/src/scan/VisibleStats.bend as VisibleStats import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes def get.sst.loop( fuel: Nat, +path: String, lock: DbLock.Lock, table: ByteMemTable.Table, state: PointRead ) -> IO(Handle & Result<&1, &1, Error, Maybe<&1, Bytes.Bytes>>): match fuel: case 0n: get.sst.exhausted(path, lock, table, state) case 1n+rest: match state: case Need{cursor, query}: do IO>>: step : SstCursor.Step <- SstCursor.next(cursor) get.sst.loop(rest, path, lock, table, Read{step, query}) case Read{step, query}: match step: case SstCursor.Item{entry, cursor}: match entry: case ByteMemTable.Entry{key, val}: match val: case None{}: get.sst.loop(rest, path, lock, table, Need{cursor, query}) case Some{value}: get.sst.loop(rest, path, lock, table, get.sst.compare.order(value, cursor, key, ByteMemTable.bytes.clone(query))) case SstCursor.Skip{cursor}: get.sst.loop(rest, path, lock, table, Need{cursor, query}) case SstCursor.End{}: IO.pure(Handle & Result<&1, &1, Error, Maybe<&1, Bytes.Bytes>>, (Handle{path, lock, table, Open{}, VisibleStats.Stats{0n, 0n}}, Done{None{}})) case SstCursor.Error{(code, message)}: IO.pure(Handle & Result<&1, &1, Error, Maybe<&1, Bytes.Bytes>>, (Handle{path, lock, table, Open{}, VisibleStats.Stats{0n, 0n}}, Fail{recovery.error(code, message)})) case Compare{value, cursor, query, order}: match order: case EQ{}: get.sst.closed(path, lock, table, Some{value}, cursor) case GT{}: get.sst.closed(path, lock, table, None{}, cursor) case LT{}: get.sst.loop(rest, path, lock, table, Need{cursor, query}) Uses (26): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Cmp https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO.bind https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO.pure https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Result https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=String https://jend.leeeet.dev/definition.txt?path=bend-kit-bytes@0.3.3.0/bytes.bend&name=Bytes https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend&name=Error https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend&name=Handle https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend&name=HandleState https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend&name=PointRead https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend&name=get.sst.closed https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend&name=get.sst.compare.order https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend&name=get.sst.exhausted https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend&name=recovery.error https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend&name=Entry https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend&name=Table https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend&name=bytes.clone https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/DbLock.bend&name=Lock https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/scan/SstCursor.bend&name=Step https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/scan/SstCursor.bend&name=next https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/scan/VisibleStats.bend&name=Stats