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)

Uses (21)

Used by (1)