def admission.request

bend-kit-http@0.38.2.0 · http.bend:6218

import bend-kit-http@0.38.2.0/http.bend as Http
import Base
import bend-kit-http@0.38.2.0/admission.bend as Admission
import bend-kit-http@0.38.2.0/completion.bend as Completion
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes

6218def admission.request(
6219  ~C: Data, ~h: C -> Req -> IO(Reply), ~observe: C -> U32 -> Completion.Outcome -> IO(Unit),
6220  admitted: Bool, +inbox: Chan(Admission.Command), +context: C, +settings: Limits, s: Socket, req: Req, rest: Bytes.Bytes, v11: Bool
6221) -> IO(Maybe<&1, Socket & Turn>):
6222  match admitted:
6223    case False{}:
6224      Limits{max, cap, hm, bm, im, wm} = settings
6225      do IO<Maybe<&1, Socket & Turn>>:
6226        admission.reject(Completion.Observed{status => outcome => observe(context, status, outcome)}, s, admission.head(req), wm)
6227        return None{}
6228    case True{}:
6229      Req{+method, path, +headers, body} = req
6230      do IO<Maybe<&1, Socket & Turn>>:
6231        res : Reply <- h(context, Req{method, path, headers, body})
6232        next : Maybe<&1, Socket & Turn> <- talk.respond(Completion.Observed{status => outcome => observe(context, status, outcome)}, settings, s, rest, headers, v11, String.eq(method, "HEAD"), res)
6233        Admission.give(inbox, 1)
6234        return next
6235
6236
6237@unsafe

Uses (23)

Used by (1)