def get.length.manifest.fallback
mylsm-lsm-store@0.6.0.1 · src/ByteDurableDb.bend:1437
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
1437def get.length.manifest.fallback(
1438 +path: String,
1439 lock: DbLock.Lock,
1440 key: Bytes.Bytes,
1441 table: ByteMemTable.Table,
1442 result: Result<&1, &1, ByteManifestIo.Error, ByteManifest.ManifestValue>
1443) -> IO(Handle & Result<&1, &1, Error, Maybe<&1, U32>>):
1444 match result:
1445 case Fail{ByteManifestIo.Invalid{_}}:
1446 IO.pure(Handle & Result<&1, &1, Error, Maybe<&1, U32>>,
1447 (Handle{path, lock, table, Open{}, VisibleStats.Stats{0n, 0n}},
1448 Fail{Corruption{"byte manifest validation failed"}}))
1449 case Fail{ByteManifestIo.Host{code, message}}:
1450 IO.pure(Handle & Result<&1, &1, Error, Maybe<&1, U32>>,
1451 (Handle{path, lock, table, Open{}, VisibleStats.Stats{0n, 0n}},
1452 Fail{Io{code, message}}))
1453 case Done{ByteManifest.Empty{}}:
1454 IO.pure(Handle & Result<&1, &1, Error, Maybe<&1, U32>>,
1455 (Handle{path, lock, table, Open{}, VisibleStats.Stats{0n, 0n}},
1456 Done{None{}}))
1457 case Done{ByteManifest.GenerationEmpty{}}:
1458 IO.pure(Handle & Result<&1, &1, Error, Maybe<&1, U32>>,
1459 (Handle{path, lock, table, Open{}, VisibleStats.Stats{0n, 0n}},
1460 Done{None{}}))
1461 case Done{ByteManifest.HasSst{}}:
1462 get.length.sst((path.clone.pair(path ++ "/SST")), lock, table, key)
1463 case Done{ByteManifest.GenerationSst{file_id}}:
1464 get.length.sst((ByteManifest.sst.generation.path(path, file_id), path),
1465 lock, table, key)