24 lines
647 B
OCaml
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
|
|
| _ -> ()
|