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