12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667moduletypeS=sigmoduleIO:S.IOtypebodytypeconn=IO.conn*Connection.t[@@warning"-3"]typeresponsetyperesponse_action=[`ExpertofHttp.Response.t*(IO.ic->IO.oc->unitIO.t)|`Responseofresponse](** A request handler can respond in two ways:
- Using [`Response], with a {!Response.t} and a {!body}.
- Using [`Expert], with a {!Response.t} and an IO function that is
expected to write the response body. The IO function has access to the
underlying {!IO.ic} and {!IO.oc}, which allows writing a response body
more efficiently, stream a response or to switch protocols entirely
(e.g. websockets). Processing of pipelined requests continue after the
[unit IO.t] is resolved. The connection can be closed by closing the
{!IO.ic}. *)typetvalmake_response_action:?conn_closed:(conn->unit)->callback:(conn->Http.Request.t->body->response_actionIO.t)->unit->tvalmake_expert:?conn_closed:(conn->unit)->callback:(conn->Http.Request.t->body->(Http.Response.t*(IO.ic->IO.oc->unitIO.t))IO.t)->unit->tvalmake:?conn_closed:(conn->unit)->callback:(conn->Http.Request.t->body->responseIO.t)->unit->tvalrespond:?headers:Http.Header.t->status:Http.Status.t->body:body->unit->responseIO.t(** [respond ?headers ~status ~body] will respond to an HTTP request with the
given [status] code and response [body]. The transfer encoding will be
detected from the [body] value and set to chunked encoding if it cannot be
determined immediately. You can override the encoding by supplying an
appropriate [Content-length] or [Transfer-encoding] in the [headers]
parameter. *)valrespond_string:?headers:Http.Header.t->status:Http.Status.t->body:string->unit->responseIO.tvalcallback:t->IO.conn->IO.ic->IO.oc->unitIO.tend