def chunk_go

mylsm-lsm-store@0.6.0.1 · src/Sstable.bend:32

import mylsm-lsm-store@0.6.0.1/src/Sstable.bend as Sstable
import Base
import mylsm-lsm-store@0.6.0.1/src/MemTable.bend as MemTable

32# Handle the chunk go for the SSTable indexes, filters, and lookup.
33def chunk_go(
34  fuel: Nat,
35  +entries: List<&2, MemTable.Entry>,
36  +cur: List<&2, MemTable.Entry>,
37  room: Nat,
38  acc: List<&2, List<&2, MemTable.Entry>>
39) -> List<&2, List<&2, MemTable.Entry>>:
40  match fuel:
41    case 0n:
42      List.reverse(&2, List<&2, MemTable.Entry>, Con{List.reverse(&2, MemTable.Entry, cur), acc})
43    case 1n+f:
44      match entries:
45        case Nil{}:
46          List.reverse(&2, List<&2, MemTable.Entry>, Con{List.reverse(&2, MemTable.Entry, cur), acc})
47        case Con{e, t}:
48          match room:
49            case 0n:
50              chunk_go(f, t, Con{e, Nil{}}, Nat.sub(block_entries(), 1n), Con{List.reverse(&2, MemTable.Entry, cur), acc})
51            case 1n+r:
52              chunk_go(f, t, Con{e, cur}, r, acc)

Uses (6)

Used by (1)