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# The closed inbox contains at most room buffered messages.
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))

Uses (10)

Used by (1)