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

Uses (10)

Used by (1)