def compact.manifest.loaded

mylsm-lsm-store@0.6.0.1 · src/ByteDurableDb.bend:993

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/ByteSstFile.bend as ByteSstFile
import mylsm-lsm-store@0.6.0.1/src/ByteSstIo.bend as ByteSstIo
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

993def compact.manifest.loaded(
994  +path: String,
995  lock: DbLock.Lock,
996  table: ByteMemTable.Table,
997  result: Result<&1, &1, ByteManifestIo.Error, ByteManifest.ManifestValue>
998) -> IO(Handle & Result<&1, &1, Error, Unit>):
999  match table:
1000    case ByteMemTable.Table{entries}:
1001      match result:
1002        case Fail{ByteManifestIo.Invalid{_}}:
1003          IO.pure(Handle & Result<&1, &1, Error, Unit>,
1004            (Handle{path, lock, ByteMemTable.Table{entries}, Open{}, VisibleStats.Stats{0n, 0n}},
1005              Fail{Corruption{"byte manifest validation failed"}}))
1006        case Fail{ByteManifestIo.Host{code, message}}:
1007          IO.pure(Handle & Result<&1, &1, Error, Unit>,
1008            (Handle{path, lock, ByteMemTable.Table{entries}, Open{}, VisibleStats.Stats{0n, 0n}}, Fail{Io{code, message}}))
1009        case Done{ByteManifest.Empty{}}:
1010          compact.entries(path, lock, ByteSstFile.entries.clone(entries))
1011        case Done{ByteManifest.GenerationEmpty{}}:
1012          compact.entries(path, lock, ByteSstFile.entries.clone(entries))
1013        case Done{ByteManifest.HasSst{}}:
1014          do IO<Handle & Result<&1, &1, Error, Unit>>:
1015            base : Result<&1, &1, U32 & String, ByteMemTable.Table> <-
1016              ByteSstIo.read(path ++ "/SST")
1017            compact.sst.loaded(path, lock, ByteMemTable.Table{entries}, base)
1018        case Done{ByteManifest.GenerationSst{file_id}}:
1019          do IO<Handle & Result<&1, &1, Error, Unit>>:
1020            base : Result<&1, &1, U32 & String, ByteMemTable.Table> <-
1021              ByteSstIo.read(ByteManifest.sst.generation.path(path, file_id))
1022            compact.sst.loaded(path, lock, ByteMemTable.Table{entries}, base)

Uses (23)

Used by (1)