def server.octets.go

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

import emerging-ezhttp@0.21.0.0/src/server.bend as Server
import Base
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes
import emerging-ezhttp@0.21.0.0/src/http.bend as Http
import emerging-ezhttp@0.21.0.0/src/step.bend as Step

208# an octets reply once its length is known: its head, then its octets
209# unless it is bare (HTTP-SRV-6, 8)
210def server.octets.go(sock: Socket, +status: U32, headers: List<&2, Http.Header>,
211  r: Bytes.Bytes & U32, bare: Bool) -> IO(Unit):
212  (b, +n) = r
213  match bare:
214    case True{}:
215      IO.bind(Socket & Step.Got<Unit>, Unit,
216        server.send.text(sock, Http.respond.head(status, headers, 0n)),
217        server.close)
218    case False{}:
219      IO.bind(Socket & Step.Got<Unit>, Unit,
220        server.send(sock, Bytes.append(Bytes.from_string(
221          Http.respond.head(status, headers, U32.to_nat(n))), b)),
222        server.close)

Uses (19)

Used by (1)