def scan.manifest.result

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

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/scan/SstCursor.bend as SstCursor
import mylsm-lsm-store@0.6.0.1/src/scan/RangeCursor.bend as RangeCursor
import mylsm-lsm-store@0.6.0.1/src/scan/VisibleCursor.bend as VisibleCursor

2209def scan.manifest.result(
2210  +path: String,
2211  handle: Handle,
2212  delta: List<&1, ByteMemTable.Entry>,
2213  bounds: RangeCursor.Bounds,
2214  sst_bounds: SstCursor.Bounds,
2215  result: Result<&1, &1, ByteManifestIo.Error, ByteManifest.ManifestValue>
2216) -> IO(Handle & Result<&1, &1, Error, VisibleCursor.Cursor>):
2217  match result:
2218    case Fail{ByteManifestIo.Invalid{_}}:
2219      IO.pure(Handle & Result<&1, &1, Error, VisibleCursor.Cursor>,
2220        (handle, Fail{Corruption{"byte manifest validation failed"}}))
2221    case Fail{ByteManifestIo.Host{code, message}}:
2222      IO.pure(Handle & Result<&1, &1, Error, VisibleCursor.Cursor>,
2223        (handle, Fail{Io{code, message}}))
2224    case Done{ByteManifest.Empty{}}:
2225      IO.pure(Handle & Result<&1, &1, Error, VisibleCursor.Cursor>,
2226        (handle, Done{VisibleCursor.open(None{}, delta, bounds)}))
2227    case Done{ByteManifest.GenerationEmpty{}}:
2228      IO.pure(Handle & Result<&1, &1, Error, VisibleCursor.Cursor>,
2229        (handle, Done{VisibleCursor.open(None{}, delta, bounds)}))
2230    case Done{ByteManifest.HasSst{}}:
2231      do IO<Handle & Result<&1, &1, Error, VisibleCursor.Cursor>>:
2232        opened : Result<&1, &1, U32 & String, SstCursor.Cursor> <-
2233          SstCursor.open.trusted(path ++ "/SST", sst_bounds)
2234        scan.sources.opened(handle, delta, bounds, opened)
2235    case Done{ByteManifest.GenerationSst{file_id}}:
2236      do IO<Handle & Result<&1, &1, Error, VisibleCursor.Cursor>>:
2237        opened : Result<&1, &1, U32 & String, SstCursor.Cursor> <-
2238          SstCursor.open.trusted(
2239            ByteManifest.sst.generation.path(path, file_id), sst_bounds)
2240        scan.sources.opened(handle, delta, bounds, opened)

Uses (24)

Used by (1)