def get.length.probed
mylsm-lsm-store@0.6.0.1 · src/ByteDurableDb.bend:1476
import mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend as ByteDurableDb
import Base
import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable
import mylsm-lsm-store@0.6.0.1/src/ByteManifest.bend as ByteManifest
import mylsm-lsm-store@0.6.0.1/src/ByteManifestIo.bend as ByteManifestIo
import mylsm-lsm-store@0.6.0.1/src/DbLock.bend as DbLock
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
1476def get.length.probed(
1477 +path: String,
1478 lock: DbLock.Lock,
1479 key: Bytes.Bytes,
1480 pair: ByteMemTable.Table & ByteMemTable.LengthProbe
1481) -> IO(Handle & Result<&1, &1, Error, Maybe<&1, U32>>):
1482 match pair:
1483 case (table, ByteMemTable.LengthDeleted{}):
1484 IO.pure(Handle & Result<&1, &1, Error, Maybe<&1, U32>>,
1485 (Handle{path, lock, table, Open{}, VisibleStats.Stats{0n, 0n}},
1486 Done{None{}}))
1487 case (table, ByteMemTable.LengthPresent{value_bytes}):
1488 IO.pure(Handle & Result<&1, &1, Error, Maybe<&1, U32>>,
1489 (Handle{path, lock, table, Open{}, VisibleStats.Stats{0n, 0n}},
1490 Done{Some{value_bytes}}))
1491 case (table, ByteMemTable.LengthAbsent{}):
1492 do IO<Handle & Result<&1, &1, Error, Maybe<&1, U32>>>:
1493 manifest : Result<&1, &1, ByteManifestIo.Error, ByteManifest.ManifestValue> <-
1494 ByteManifestIo.read(path ++ "/MANIFEST")
1495 get.length.manifest(path, lock, key, table, manifest)