def drain
bend-kit-camber@0.15.0.1 · camber.bend:169
import bend-kit-camber@0.15.0.1/camber.bend as Camber
import Base
169
170def drain(~R: Type, ~P: Data, ~I: Data, ~E: Data, ~O: Data,
171 ~destroy: R -> IO(Unit), fuel: Nat, +messages: Chan(Message<R, P, I, E, O>)
172) -> IO(Unit):
173 match fuel:
174 case 0n:
175 IO.pure(Unit, Unit{})
176 case 1n+p:
177 do IO<Unit>:
178 pending : Maybe<&1, Message<R, P, I, E, O>> <- Chan.recv(Message<R, P, I, E, O>, messages)
179 drain.step(~R, ~P, ~I, ~E, ~O, ~destroy, pending, u => drain(~R, ~P, ~I, ~E, ~O, ~destroy, p, messages))