mte/unikernel/duniverse/httpun/lib/response_state.ml
2025-11-11 02:07:51 +01:00

24 lines
647 B
OCaml

type t =
| Waiting
| Fixed of Response.t
| Streaming of Response.t * Body.Writer.t
| Upgrade of Response.t * (unit -> unit)
let output_state t ~writer : Output_state.t =
match t with
| Fixed _ -> Complete
| Waiting ->
if Serialize.Writer.is_closed writer then Complete
else Waiting
| Streaming(_, response_body) ->
if Serialize.Writer.is_closed writer then Complete
else if Body.Writer.requires_output response_body
then Ready
else Complete
| Upgrade _ -> Ready
let flush_response_body t =
match t with
| Streaming (_, response_body) ->
Body.Writer.transfer_to_writer response_body
| _ -> ()