package cohttp-eio

  1. Overview
  2. Docs
CoHTTP implementation with eio backend

Install

Dune Dependency

Authors

Maintainers

Sources

cohttp-v6.0.0_beta2.tbz
sha256=90ecec8bd580411b4272c031b2f6b9c0a50485d20683c6a9c615242f3724b017
sha512=83ef539469d982862174a929e9baeb5b2a34e9323ee577d8be7148ebed9e785d835d59cc22982bc083bb872e4544616e2bf531ed7edf96bc397151c28bf618d6

doc/cohttp-eio/Cohttp_eio/Server/index.html

Module Cohttp_eio.ServerSource

include Cohttp.Generic.Server.S with module IO = Cohttp_eio__.Io.IO and type body = Body.t
Sourcemodule IO : sig ... end
Sourcetype body = Body.t
Sourcetype response_action = [
  1. | `Expert of Http.Response.t * (IO.ic -> IO.oc -> unit IO.t)
  2. | `Response of Http.Response.t * body
]

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 unitIO.t is resolved. The connection can be closed by closing the IO.ic.
Sourcetype t
Sourceval make_response_action : ?conn_closed:(conn -> unit) -> callback:(conn -> Http.Request.t -> body -> response_action IO.t) -> unit -> t
Sourceval make_expert : ?conn_closed:(conn -> unit) -> callback: (conn -> Http.Request.t -> body -> (Http.Response.t * (IO.ic -> IO.oc -> unit IO.t)) IO.t) -> unit -> t
Sourceval make : ?conn_closed:(conn -> unit) -> callback:(conn -> Http.Request.t -> body -> (Http.Response.t * body) IO.t) -> unit -> t
Sourceval respond : ?headers:Http.Header.t -> ?flush:bool -> status:Http.Status.t -> body:body -> unit -> (Http.Response.t * body) IO.t

respond ?headers ?flush ~status ~body will respond to an HTTP request with the given status code and response body. If flush is true, then every response chunk will be flushed to the network rather than being buffered. flush is true by default. 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.

Sourceval respond_string : ?headers:Http.Header.t -> ?flush:bool -> status:Http.Status.t -> body:string -> unit -> (Http.Response.t * body) IO.t
Sourceval callback : t -> IO.conn -> IO.ic -> IO.oc -> unit IO.t
Sourceval run : ?max_connections:int -> ?additional_domains:(_ Eio__Domain_manager.t * int) -> ?stop:'a Eio.Promise.t -> on_error:(exn -> unit) -> _ Eio.Net.listening_socket -> t -> 'a
OCaml

Innovation. Community. Security.