Http.talk: def of bend-kit-http@0.38.2.0 Import: import bend-kit-http@0.38.2.0/http.bend as Http Lines 6238-6259 of bend-kit-http@0.38.2.0/http.bend: https://jend.leeeet.dev/read.txt?path=bend-kit-http@0.38.2.0/http.bend&start_line=6238&end_line=6259 import Base import bend-kit-http@0.38.2.0/admission.bend as Admission import bend-kit-http@0.38.2.0/completion.bend as Completion def talk(~C: Data, ~h: C -> Req -> IO(Reply), ~observe: C -> U32 -> Completion.Outcome -> IO(Unit), +context: C, +settings: Limits, +inbox: Chan(Admission.Command), st: Maybe<&1, Serving>) -> IO(Unit): Limits{max, cap, hm, bm, im, wm} = settings match st: case None{}: IO.pure(Unit, Unit{}) case Some{Serving{(s, t), phase}}: match t: case TurnMore{sv, cont}: do IO: received : (Socket & Turn) & Phase <- talk.recv(inbox, False{}, settings, s, sv, cont, phase) talk(~C, ~h, ~observe, context, settings, inbox, Some{talk.state(received)}) case TurnReq{req, rest, v11}: do IO: admitted : Bool <- Admission.take(inbox, 1) next : Maybe<&1, Socket & Turn> <- admission.request(~C, ~h, ~observe, admitted, inbox, context, settings, s, req, rest, v11) talk(~C, ~h, ~observe, context, settings, inbox, serve.write.state(next)) case TurnFail{status}: reply_fail(Completion.Observed{status => outcome => observe(context, status, outcome)}, s, status, wm) case TurnClose{}: Socket.close(s) case TurnInputFailed{operation, code, message}: Socket.close(s) Uses (27): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Chan https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO.bind https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO.pure https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Socket https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Socket.close https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Unit https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/admission.bend&name=Command https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/admission.bend&name=take https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/completion.bend&name=Outcome https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/completion.bend&name=Receipt https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=Limits https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=Phase https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=Reply https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=Req https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=Serving https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=Turn https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=admission.request https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=reply_fail https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=serve.write.state https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=talk.recv https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.2.0/http.bend&name=talk.state