def serve.write.open

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

import bend-kit-http@0.38.4.0/http.bend as Http
import Base
import bend-kit-http@0.38.4.0/completion.bend as Completion
import bend-kit-time@0.3.0.0/time.bend as Time
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes

6936def serve.write.open(~S: Type, ~write: S -> Writer -> Completion.Receipt -> IO(Writer & Completion.Receipt), ~dispose: S -> IO(Unit),
6937  observer: Completion.Receipt, receipt: Completion.Receipt, +status: U32, settings: Limits,
6938  keep: Bool, rest: Bytes.Bytes, state: S, mode: WriterMode, suppress: Bool, until: Time.Duration,
6939  m: Socket & Result<&1, &1, U32 & String, Unit>) -> IO(Maybe<&1, Socket & Turn>):
6940  (s, r) = m
6941  match r:
6942    case Fail{(code, message)}:
6943      +failure = {Completion.WriteFailed{code, message} : Completion.Outcome}
6944      do IO<Maybe<&1, Socket & Turn>>:
6945        Socket.close(s)
6946        dispose(state)
6947        Completion.report(observer, status, failure)
6948        Completion.report(receipt, status, failure)
6949        return None{}
6950    case Done{u}:
6951      serve.write.body(~S, ~write, ~dispose, observer, receipt, status, settings, keep, rest, state, s, mode, suppress, until)

Uses (23)

Used by (1)