Http.serve.write.talk: def of bend-kit-http@0.38.4.0 Import: import bend-kit-http@0.38.4.0/http.bend as Http Lines 7006-7030 of bend-kit-http@0.38.4.0/http.bend: https://jend.leeeet.dev/read.txt?path=bend-kit-http@0.38.4.0/http.bend&start_line=7006&end_line=7030 import Base import bend-kit-http@0.38.4.0/admission.bend as Admission import bend-kit-http@0.38.4.0/completion.bend as Completion def serve.write.talk( ~S: Type, ~start: Req -> IO(WriteHead), ~write: S -> Writer -> Completion.Receipt -> IO(Writer & Completion.Receipt), ~dispose: S -> IO(Unit), ~observe: U32 -> Completion.Outcome -> IO(Unit), +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) serve.write.talk(~S, ~start, ~write, ~dispose, ~observe, settings, inbox, Some{talk.state(received)}) case TurnReq{req, rest, v11}: do IO: admitted : Bool <- Admission.take(inbox, 1) after : Maybe<&1, Socket & Turn> <- admission.write(~S, ~start, ~write, ~dispose, ~observe, admitted, inbox, settings, s, req, rest, v11) serve.write.talk(~S, ~start, ~write, ~dispose, ~observe, settings, inbox, serve.write.state(after)) case TurnFail{status}: reply_fail(Completion.Observed{status => outcome => observe(status, outcome)}, s, status, wm) case TurnClose{}: Socket.close(s) case TurnInputFailed{operation, code, message}: Socket.close(s) Uses (28): 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.4.0/admission.bend&name=Command https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/admission.bend&name=take https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/completion.bend&name=Outcome https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/completion.bend&name=Receipt https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=Limits https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=Phase https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=Req https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=Serving https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=Turn https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=WriteHead https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=Writer https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=admission.write https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=reply_fail https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=serve.write.state https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=talk.recv https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=talk.state