def next

mylsm-lsm-store@0.6.0.1 · src/scan/VisibleCursor.bend:413

import mylsm-lsm-store@0.6.0.1/src/scan/VisibleCursor.bend as VisibleCursor
import Base
import mylsm-lsm-store@0.6.0.1/src/scan/SstCursor.bend as SstCursor

413# Advances the SST source by at most one record and merges one visible result.
414def next(cursor: Cursor) -> IO(Step):
415  match cursor:
416    case Active{base, pending, delta, bounds, Some{entry}}:
417      IO.pure(Step, Item{entry, Active{base, pending, delta, bounds, None{}}})
418    case Active{Some{base}, None{}, delta, bounds, None{}}:
419      do IO<Step>:
420        result : SstCursor.Step <- SstCursor.next(base)
421        step : Step <- base.next.result(delta, bounds, result)
422        return step
423    case Active{base, pending, delta, bounds, None{}}:
424      IO.pure(Step, ready(base, pending, delta, bounds))
425    case Ended{}: IO.pure(Step, End{})
426    case Closed{}: IO.pure(Step, End{})
427    case Failed{error}: IO.pure(Step, Error{error})

Uses (10)

Used by (4)