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)

Uses (21)

Used by (1)