def server.loop.got
emerging-ezhttp@0.21.0.0 · src/server.bend:382
import emerging-ezhttp@0.21.0.0/src/server.bend as Server
import Base
import emerging-ezhttp@0.21.0.0/src/step.bend as Step
382
383
384
385def server.loop.got(~C: Data, ~handle: C -> Req -> IO(Answer), +ctx: C,
386 +slots: Chan(Unit), +limited: Bool, +done: Chan(Unit), +tracked: Bool,
387 r: Listener & Step.Accept<Socket>, took: Listener -> IO(Unit),
388 idle: Listener -> IO(Unit), missed: Listener -> IO(Unit)) -> IO(Unit):
389 (lst, got) = r
390 match got:
391 case Step.Took{sock}:
392 IO.bind(Unit, Unit,
393 server.fork(~C, handle, ctx, sock, slots, limited, done, tracked),
394 _u => took(lst))
395 case Step.Idle{}:
396 idle(lst)
397 case Step.Missed{line}:
398 IO.bind(Unit, Unit, IO.print_err(line), _u =>
399 IO.bind(Unit, Unit, IO.sleep(server.pause()), _v => missed(lst)))