def pin.retired.loop

mylsm-lsm-store@0.6.0.1 · src/scan/Snapshot.bend:1261

import mylsm-lsm-store@0.6.0.1/src/scan/Snapshot.bend as Snapshot
import Base

1261def pin.retired.loop(
1262  retired: List<&2, FileGeneration>,
1263  +target: Nat,
1264  matches: Bool
1265) -> RetiredPin:
1266  match retired:
1267    case Nil{}: RetiredPinMissing{Nil{}}
1268    case Con{FileGeneration{+id, +size, +references}, Nil{}}:
1269      match matches:
1270        case True{}:
1271          RetiredPinned{Con{FileGeneration{id, size,
1272            Nat.add(references, 1n)}, Nil{}}}
1273        case False{}:
1274          RetiredPinMissing{Con{FileGeneration{id, size,
1275            references}, Nil{}}}
1276    case Con{FileGeneration{+id, +size, +references},
1277        Con{FileGeneration{+next_id, +next_size, +next_references}, rest}}:
1278      match matches:
1279        case True{}:
1280          RetiredPinned{Con{FileGeneration{id, size,
1281            Nat.add(references, 1n)},
1282            Con{FileGeneration{next_id, next_size, next_references}, rest}}}
1283        case False{}:
1284          pin.retired.prepend(id, size, references,
1285            pin.retired.loop(Con{FileGeneration{next_id, next_size,
1286              next_references}, rest}, target,
1287              Nat.is_eq(next_id, target)))

Uses (8)

Used by (1)