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)

Uses (22)

Used by (1)