def serve.write.send.plan

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

import bend-kit-http@0.38.5.0/http.bend as Http
import Base
import bend-kit-http@0.38.5.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

6952def serve.write.send.plan(
6953  ~S: Type, ~write: S -> Writer -> Completion.Receipt -> IO(Writer & Completion.Receipt), ~dispose: S -> IO(Unit),
6954  observer: Completion.Receipt, receipt: Completion.Receipt, +settings: Limits, s: Socket, rest: Bytes.Bytes,
6955  +keep: Bool, +head: Bool, +status: U32, state: S, plan: WriterMode & Map<&2, List<&2, String>>
6956) -> IO(Maybe<&1, Socket & Turn>):
6957  Limits{max, cap, hm, bm, im, wm} = settings
6958  (mode, headers) = plan
6959  sent_headers = writer.connection(keep, headers)
6960  do IO<Maybe<&1, Socket & Turn>>:
6961    now : Time.Duration <- Time.mono()
6962    +until : Time.Duration = Time.Duration.add(now, Time.Duration.of_ms(wm))
6963    sent : Socket & Result<&1, &1, U32 & String, Unit> <-
6964      bounded.send(s, Bytes.from_string(response(status, sent_headers, "")), until)
6965    serve.write.open(~S, ~write, ~dispose, observer, receipt, status, settings, keep, rest, state, mode,
6966      frame.nobody(status, head), until, sent)

Uses (29)

Used by (1)