def admission.write

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

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

6978def admission.write(
6979  ~S: Type, ~start: Req -> IO(WriteHead<S>), ~write: S -> Writer -> Completion.Receipt -> IO(Writer & Completion.Receipt), ~dispose: S -> IO(Unit), ~observe: U32 -> Completion.Outcome -> IO(Unit),
6980  admitted: Bool, +inbox: Chan(Admission.Command), +settings: Limits,
6981  s: Socket, req: Req, rest: Bytes.Bytes, v11: Bool
6982) -> IO(Maybe<&1, Socket & Turn>):
6983  match admitted:
6984    case False{}:
6985      Limits{max, cap, hm, bm, im, wm} = settings
6986      do IO<Maybe<&1, Socket & Turn>>:
6987        admission.reject(Completion.Observed{status => outcome => observe(status, outcome)}, s, admission.head(req), wm)
6988        return None{}
6989    case True{}:
6990      Req{+method, path, +headers, body} = req
6991      do IO<Maybe<&1, Socket & Turn>>:
6992        out : WriteHead<S> <- start(Req{method, path, headers, body})
6993        after : Maybe<&1, Socket & Turn> <- serve.write.send(~S, ~write, ~dispose, Completion.Observed{status => outcome => observe(status, outcome)}, settings, s, rest, headers, v11, String.eq(method, "HEAD"), out)
6994        Admission.give(inbox, 1)
6995        return after
6996
6997@unsafe

Uses (24)

Used by (1)