def blocks.prepare.step

mylsm-lsm-store@0.6.0.1 · src/SstFile.bend:439

import mylsm-lsm-store@0.6.0.1/src/SstFile.bend as SstFile
import Base
import mylsm-lsm-store@0.6.0.1/src/MemTable.bend as MemTable
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes

439# Store a block digest and continue with the remaining blocks.
440def blocks.prepare.step(
441  rest: List<&2, List<&2, MemTable.Entry>>,
442  current: Result<&1, &1, Error, EncodedBlock>,
443  blocks: List<&1, Bytes.Bytes>,
444  digests: List<&1, Bytes.Bytes>
445) -> Result<&1, &1, Error, List<&1, Bytes.Bytes> & List<&1, Bytes.Bytes>>:
446  match rest current:
447    case Nil{} Fail{error}:
448      Fail{error}
449    case Nil{} Done{Block{bytes, digest}}:
450      Done{(List.reverse(&1, Bytes.Bytes, bytes <> blocks),
451        List.reverse(&1, Bytes.Bytes, digest <> digests))}
452    case Con{_entries, _tail} Fail{error}:
453      Fail{error}
454    case Con{entries, tail} Done{Block{bytes, digest}}:
455      blocks.prepare.step(tail, encode_block(entries), bytes <> blocks, digest <> digests)

Uses (10)

Used by (1)