def stream.head

bend-kit-http@0.38.4.0 · http.bend:4930

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

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

Uses (24)

Used by (1)