def stream.head

bend-kit-http@0.38.5.0 · http.bend:4934

import bend-kit-http@0.38.5.0/http.bend as Http
import Base

4934def stream.head(+tls: Bool, +ms: U32, +head: Bool, back: Maybe<&2, String>, st: Socket & Sh) -> IO(Bool & Result<&1, &1, Err, Stream>):
4935  (s, sh) = st
4936  match sh:
4937    case ShMore{buf, +k}:
4938      do IO<Bool & Result<&1, &1, Err, Stream>>:
4939        m : Socket & Result<&1, &1, U32 & String, U32 & Array<U32>> <- io.recv.words(tls, s, 65536, ms)
4940        stream.head(tls, ms, head, back, sh.next(head, buf, k, m))
4941    case ShBad{err, +none}:
4942      do IO<Bool & Result<&1, &1, Err, Stream>>:
4943        r : Result<&1, &1, Err, Res> <- fetch.bad(tls, s, err)
4944        return (none, fetch.fail.of(r))
4945    case ShRes{res, +rb, rest}:
4946      Res{+status, +headers, body} = res
4947      IO.pure(Bool & Result<&1, &1, Err, Stream>, (False{}, Done{stream.mk(tls, s, ms, Res{status, headers, body}, Nil{},
4948        stream.back(back, rb, headers), stream.pc(rb, rest))}))

Uses (24)

Used by (1)