def select.close
import bend-kit-concurrency@0.2.0.0/concurrency.bend as Concurrencyimport Base
294# Closes out once all n relays have reported.
295def select.close(-A: Type, n: Nat, +out: Chan(U32 & A), +done: Chan(Unit)) -> IO(Unit):
296 match n:
297 case 0n:
298 do IO<Unit>:
299 Chan.close(U32 & A, out)
300 Chan.close(Unit, done)
301 case 1n+p:
302 do IO<Unit>:
303 got : Maybe<&1, Unit> <- Chan.recv(Unit, done)
304 select.close(A, p, out, done)