def drain.woke
bend-kit-runner@0.13.0.1 · runner.bend:1654
import bend-kit-runner@0.13.0.1/runner.bend as Runner
import Base
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes
import bend-kit-retry@0.3.0.0/retry.bend as Retry
1654def drain.woke(~A: Data, ~penc: A -> Bytes.Bytes, ~target: A -> String, ~work: A -> IO(Retry.Outcome), +idle: U32,
1655 x: Poll<&1, &1, Maybe<&1, Msg<A>>, Unit>, r: Runner<A>, next: Runner<A> -> IO(Ran(A))) -> IO(Ran(A)):
1656 match x:
1657 case Ready{Some{m}}:
1658 do IO<Ran(A)>:
1659 t : Runner<A> & Out(Bool) <- tick.got(~A, ~penc, ~target, ~work, (r, Some{m}), True{}, 0n, Done{Unit{}},
1660 (k => tick.run(~A, ~penc, ~target, ~work, 0n, True{}, k)))
1661 drain.handled(A, t, next)
1662 case Ready{None{}}:
1663 do IO<Ran(A)>:
1664 IO.sleep(idle)
1665 next(r)
1666 case Wait{u}:
1667 next(r)