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)