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