sig
  type http_server_func =
      Amall_http.request ->
      (Cd_All.Strings.Latin1.char, Amall_http.response) I.iteratee
  type http_service_func =
      Amall_http.segpath ->
      Amall_http.request ->
      (Cd_All.Strings.Latin1.char, Amall_http.response) I.iteratee
  module Ws :
    sig
      type ws_out_socket = Amall_http.Make(IO)(I).Ws.ws_out_socket
      val of_out_channel : IO.output_channel -> ws_out_socket
      exception Output_closed
      exception Close_received of int
      val send :
        ws_out_socket -> Amall_http.ws_opcode_out -> string -> unit IO.m
      val close : ws_out_socket -> (int * string) option -> unit IO.m
      val it_close :
        ws_out_socket ->
        int option -> (Cd_All.Strings.Latin1.char, unit) I.iteratee
      val is_close_sent : ws_out_socket -> bool
    end
  type websocket_service_func_worker =
      Amall_http.ws_opcode_in ->
      (Cd_All.Strings.Latin1.char, unit) I.iteratee
  type websocket_service_func =
      (Amall_http.segpath, Amall_http.request, Ws.ws_out_socket,
       websocket_service_func_worker)
      Cd_All.Partapp3.partapp3
  type service_desc =
      [ `Service_http of http_service_func
      | `Service_ws of websocket_service_func ]
  val response_headers :
    Amall_http.response ->
    (string * string) list -> (string * string) list IO.m
  val string_of_header : Cd_All.Strings.Latin1.String.t * string -> string
  val string_of_response_headers : Amall_http.response -> string I.It_IO.m
  val read_the_string :
    Cd_All.Strings.Latin1.String.t -> I.err_msg -> (char, unit) I.iteratee
  val it_eof : ('a, 'b) I.iteratee -> ('c, 'b) I.iteratee
  val it_eof_ignore : ('a, 'b) I.iteratee -> ('c, unit) I.iteratee
  val list_map_all :
    ('-> ('b, 'c) I.iteratee) -> 'a list -> ('b, 'c list) I.iteratee
  val can_upgrade_to_websocket : Amall_http.request -> string option
  val it_http :
    (Amall_http.request -> Amall_http.segpath * service_desc) ->
    (Cd_All.Strings.Latin1.char,
     Amall_http.request *
     [ `Http of (Cd_All.Strings.Latin1.char, Amall_http.response) I.iteratee
     | `Ws of string * websocket_service_func * Amall_http.segpath ])
    I.iteratee
  val it_post_vars :
    (Cd_All.Strings.Latin1.char, (string * string) list) I.iteratee
  val request_with_post_vars :
    Amall_http.request ->
    (Cd_All.Strings.Latin1.char, Amall_http.request * (string * string) list)
    I.iteratee
  val output_file_buffer_size : int ref
  val output_body_file :
    IO.output_channel -> string -> int64 -> unit I.It_IO.m
  val output_body : IO.output_channel -> Amall_http.rs_body -> unit I.It_IO.m
  val output_response :
    is_head:bool ->
    IO.output_channel -> Amall_http.response -> unit I.It_IO.m
end