def encode.blocks.go
mylsm-lsm-store@0.6.0.1 · src/ByteSstFile.bend:644
import mylsm-lsm-store@0.6.0.1/src/ByteSstFile.bend as ByteSstFile
import Base
import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable
644def encode.blocks.go(
645 fuel: Nat,
646 pending: List<&1, List<&1, ByteMemTable.Entry>> & Result<&1, &1, Error, EncodedBlock>,
647 reversed: List<&1, EncodedBlock>
648) -> Result<&1, &1, Error, List<&1, EncodedBlock>>:
649 match fuel:
650 case 0n:
651 match pending:
652 case (Nil{}, _): Done{List.reverse(&1, EncodedBlock, reversed)}
653 case _: Fail{Malformed{}}
654 case 1n+rest:
655 match pending:
656 case (Nil{}, _): Done{List.reverse(&1, EncodedBlock, reversed)}
657 case (Con{_, _}, Fail{error}): Fail{error}
658 case (Con{_, tail}, Done{block}):
659 encode.blocks.go(rest, encode.pages.prepare(tail),
660 Con{block, reversed})