def server.read.go

emerging-ezhttp@0.21.0.0 · src/server.bend:147

import emerging-ezhttp@0.21.0.0/src/server.bend as Server
import Base
import bend-kit-wire@0.4.6.1/wire.bend as W
import emerging-ezhttp@0.21.0.0/src/http.bend as Http
import emerging-ezhttp@0.21.0.0/src/step.bend as Step

147# receive until the head has ended and its Content-Length has arrived, the
148# peer closes, or the receives run out
149def server.read.go(fuel: Nat, sock: Socket, +ps: List<&2, String>, +have: Nat,
150  +need: Maybe<&2, Nat>) -> IO(Socket & Step.Got<Http.Request>):
151  match fuel:
152    case 0n:
153      server.read.done(sock, ps)
154    case 1n+f:
155      IO.bind(Socket & Result<&1, &1, U32 & String, String>,
156        Socket & Step.Got<Http.Request>,
157        W.recv(sock, server.max(), 0),
158        r => server.read.got(ps, have, need, r,
159          s => p => h => m => server.read.go(f, s, p, h, m)))

Uses (16)

Used by (1)