def claim.admit
bend-kit-runner@0.13.0.1 · runner.bend:1245
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-scheduler@0.4.1.0/queue.bend as Q
import bend-kit-resources@0.1.0.0/resources.bend as Res
import bend-kit-retry@0.3.0.0/retry.bend as Retry
1245
1246def claim.admit(~A: Data, ~penc: A -> Bytes.Bytes, ~target: A -> String, ~work: A -> IO(Retry.Outcome), +now: Nat, r: Runner<A>, t: Q.Ticket<A>, g: Res.Grant,
1247 next: Runner<A> -> IO(Claimed(A))) -> IO(Claimed(A)):
1248 Runner{j, +s, p, +c, ib, fs} = r
1249 Config{pol, circ, idle, every} = c
1250 Q.Ticket{+id, d, +x} = t
1251 +key = target(x)
1252 +old = brk.get(A, s, key)
1253 claim.gate(~A, ~penc, ~work, now, Retry.admit(Retry.BreakerOn{circ, old}, budget(pol, tries.get(tries(A, s), id)), now), key, old,
1254 Runner{j, s, p, c, ib, fs}, id, d, x, g, next)