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
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)