sig
  type mycookieslist =
      (string list option * float option * (string * string) list) list
  type create_sender_type =
      ?server_name:string ->
      ?proto:string -> Lwt_unix.descr -> Http_com.sender_type
  type send_page_type =
      ?cookies:Predefined_senders.mycookieslist ->
      unit Lwt.t ->
      ?code:int ->
      ?etag:Http_frame.etag ->
      keep_alive:bool ->
      ?last_modified:float ->
      ?location:string ->
      ?head:bool -> ?charset:string -> Http_com.sender_type -> unit Lwt.t
  val send_xhtml_page :
    content:[ `Html ] XHTML.M.elt -> Predefined_senders.send_page_type
  val send_file : content:string -> Predefined_senders.send_page_type
  val send_empty : content:unit -> Predefined_senders.send_page_type
  val send_text_page :
    ?contenttype:string ->
    content:string -> Predefined_senders.send_page_type
  val create_xhtml_sender : Predefined_senders.create_sender_type
  val create_empty_sender : Predefined_senders.create_sender_type
  val create_file_sender : Predefined_senders.create_sender_type
  exception Stream_already_read
  val send_error :
    ?http_exception:exn ->
    ?error_num:int -> Predefined_senders.send_page_type
  module Xhtml_content :
    sig
      type t = [ `Html ] XHTML.M.elt
      val get_etag_aux : string -> string
      val get_etag : [ `Html ] XHTML.M.elt -> string
      val stream_of_content :
        [ `Html ] XHTML.M.elt ->
        (int64 * string * Ocsistream.stream * ('-> 'a)) Lwt.t
      val content_of_stream : '-> 'b
    end
  module Text_content :
    sig
      type t = string
      val get_etag : string -> string
      val stream_of_content :
        string -> (int64 * string * Ocsistream.stream * ('-> 'a)) Lwt.t
      val content_of_stream :
        Ocsistream.stream -> Predefined_senders.Text_content.t Lwt.t
    end
  module Stream_content :
    sig
      type t = unit -> Ocsistream.stream
      val get_etag : '-> 'b
      val stream_of_content : '-> 'b
      val content_of_stream :
        Ocsistream.stream -> Predefined_senders.Stream_content.t Lwt.t
    end
  module Empty_content :
    sig
      type t = unit
      val get_etag : '-> string
      val stream_of_content :
        '-> (int64 * string * Ocsistream.stream * ('-> 'b)) Lwt.t
      val content_of_stream : Ocsistream.stream -> unit Lwt.t
    end
  module File_content :
    sig
      type t = string
      val read_file :
        ?buffer_size:int -> Unix.file_descr -> Ocsistream.stream Lwt.t
      val get_etag_aux : Unix.LargeFile.stats -> string
      val get_etag : string -> string
      val stream_of_content :
        string -> (int64 * string * Ocsistream.stream * (unit -> unit)) Lwt.t
      val content_of_stream : '-> 'b
    end
  module Empty_sender :
    sig
      module H :
        sig
          type http_mode = Http_frame.Http_header.http_mode = Query | Answer
          type http_method =
            Http_frame.Http_header.http_method =
              GET
            | POST
            | HEAD
            | PUT
            | DELETE
            | TRACE
            | OPTIONS
            | CONNECT
            | LINK
            | UNLINK
            | PATCH
          type http_header =
            Http_frame.Http_header.http_header = {
            mode : Predefined_senders.Empty_sender.H.http_mode;
            meth : Predefined_senders.Empty_sender.H.http_method option;
            url : string option;
            code : int option;
            proto : string;
            headers : (string * string) list;
          }
          val get_url :
            Predefined_senders.Empty_sender.H.http_header -> string
          val get_headers_value :
            Predefined_senders.Empty_sender.H.http_header -> string -> string
          val get_proto :
            Predefined_senders.Empty_sender.H.http_header -> string
          val get_method :
            Predefined_senders.Empty_sender.H.http_header ->
            Predefined_senders.Empty_sender.H.http_method option
          val add_headers :
            Predefined_senders.Empty_sender.H.http_header ->
            string -> string -> Predefined_senders.Empty_sender.H.http_header
        end
      module Http :
        sig
          type frame_content = Predefined_senders.Empty_content.t option
          type http_frame =
            Http_frame.FHttp_frame(Empty_content).http_frame = {
            header : Http_frame.Http_header.http_header;
            content : Predefined_senders.Empty_sender.Http.frame_content;
            waiter_thread : unit Lwt.t;
          }
        end
      module PP :
        sig
          module Http :
            sig
              type frame_content = Predefined_senders.Empty_content.t option
              type http_frame =
                Http_frame.FHttp_frame(Empty_content).http_frame = {
                header : Http_frame.Http_header.http_header;
                content :
                  Predefined_senders.Empty_sender.PP.Http.frame_content;
                waiter_thread : unit Lwt.t;
              }
            end
          val string_of_http_frame :
            Predefined_senders.Empty_sender.PP.Http.http_frame ->
            string option -> string
        end
      type t = Http_com.sender_type
      val really_write :
        Lwt_unix.descr -> (unit -> unit) -> Ocsistream.stream -> unit Lwt.t
      val change_protocol : string -> Http_com.sender_type -> unit
      val change_headers :
        (string * string) list -> Http_com.sender_type -> unit
      val change_mode :
        Http_frame.Http_header.http_mode -> Http_com.sender_type -> unit
      val non_case_equality : string -> string -> bool
      val non_case_compare : string -> string -> int
      val pair_order : string * string -> string * string -> bool
      val add_header : Http_com.sender_type -> string -> string -> unit
      val rem_header : Http_com.sender_type -> string -> unit
      val get_protocol : Http_com.sender_type -> string
      val get_mode : Http_com.sender_type -> Http_frame.Http_header.http_mode
      val get_headers : Http_com.sender_type -> (string * string) list
      val get_header_value : Http_com.sender_type -> string -> string
      val hds_fusion :
        int64 option ->
        (string * string) list ->
        (string * string) list -> (string * string) list
      val send :
        unit Lwt.t ->
        ?etag:Http_frame.etag ->
        ?mode:Predefined_senders.Empty_sender.H.http_mode ->
        ?proto:string ->
        ?headers:(string * string) list ->
        ?meth:Predefined_senders.Empty_sender.H.http_method ->
        ?url:string ->
        ?code:int ->
        ?content:Predefined_senders.Empty_content.t ->
        ?head:bool -> Http_com.sender_type -> unit Lwt.t
    end
  module Xhtml_sender :
    sig
      module H :
        sig
          type http_mode = Http_frame.Http_header.http_mode = Query | Answer
          type http_method =
            Http_frame.Http_header.http_method =
              GET
            | POST
            | HEAD
            | PUT
            | DELETE
            | TRACE
            | OPTIONS
            | CONNECT
            | LINK
            | UNLINK
            | PATCH
          type http_header =
            Http_frame.Http_header.http_header = {
            mode : Predefined_senders.Xhtml_sender.H.http_mode;
            meth : Predefined_senders.Xhtml_sender.H.http_method option;
            url : string option;
            code : int option;
            proto : string;
            headers : (string * string) list;
          }
          val get_url :
            Predefined_senders.Xhtml_sender.H.http_header -> string
          val get_headers_value :
            Predefined_senders.Xhtml_sender.H.http_header -> string -> string
          val get_proto :
            Predefined_senders.Xhtml_sender.H.http_header -> string
          val get_method :
            Predefined_senders.Xhtml_sender.H.http_header ->
            Predefined_senders.Xhtml_sender.H.http_method option
          val add_headers :
            Predefined_senders.Xhtml_sender.H.http_header ->
            string -> string -> Predefined_senders.Xhtml_sender.H.http_header
        end
      module Http :
        sig
          type frame_content = Predefined_senders.Xhtml_content.t option
          type http_frame =
            Http_frame.FHttp_frame(Xhtml_content).http_frame = {
            header : Http_frame.Http_header.http_header;
            content : Predefined_senders.Xhtml_sender.Http.frame_content;
            waiter_thread : unit Lwt.t;
          }
        end
      module PP :
        sig
          module Http :
            sig
              type frame_content = Predefined_senders.Xhtml_content.t option
              type http_frame =
                Http_frame.FHttp_frame(Xhtml_content).http_frame = {
                header : Http_frame.Http_header.http_header;
                content :
                  Predefined_senders.Xhtml_sender.PP.Http.frame_content;
                waiter_thread : unit Lwt.t;
              }
            end
          val string_of_http_frame :
            Predefined_senders.Xhtml_sender.PP.Http.http_frame ->
            string option -> string
        end
      type t = Http_com.sender_type
      val really_write :
        Lwt_unix.descr -> (unit -> unit) -> Ocsistream.stream -> unit Lwt.t
      val change_protocol : string -> Http_com.sender_type -> unit
      val change_headers :
        (string * string) list -> Http_com.sender_type -> unit
      val change_mode :
        Http_frame.Http_header.http_mode -> Http_com.sender_type -> unit
      val non_case_equality : string -> string -> bool
      val non_case_compare : string -> string -> int
      val pair_order : string * string -> string * string -> bool
      val add_header : Http_com.sender_type -> string -> string -> unit
      val rem_header : Http_com.sender_type -> string -> unit
      val get_protocol : Http_com.sender_type -> string
      val get_mode : Http_com.sender_type -> Http_frame.Http_header.http_mode
      val get_headers : Http_com.sender_type -> (string * string) list
      val get_header_value : Http_com.sender_type -> string -> string
      val hds_fusion :
        int64 option ->
        (string * string) list ->
        (string * string) list -> (string * string) list
      val send :
        unit Lwt.t ->
        ?etag:Http_frame.etag ->
        ?mode:Predefined_senders.Xhtml_sender.H.http_mode ->
        ?proto:string ->
        ?headers:(string * string) list ->
        ?meth:Predefined_senders.Xhtml_sender.H.http_method ->
        ?url:string ->
        ?code:int ->
        ?content:Predefined_senders.Xhtml_content.t ->
        ?head:bool -> Http_com.sender_type -> unit Lwt.t
    end
  module Text_http_frame :
    sig
      type frame_content = Predefined_senders.Text_content.t option
      type http_frame =
        Http_frame.FHttp_frame(Text_content).http_frame = {
        header : Http_frame.Http_header.http_header;
        content : Predefined_senders.Text_http_frame.frame_content;
        waiter_thread : unit Lwt.t;
      }
    end
  module Text_sender :
    sig
      module H :
        sig
          type http_mode = Http_frame.Http_header.http_mode = Query | Answer
          type http_method =
            Http_frame.Http_header.http_method =
              GET
            | POST
            | HEAD
            | PUT
            | DELETE
            | TRACE
            | OPTIONS
            | CONNECT
            | LINK
            | UNLINK
            | PATCH
          type http_header =
            Http_frame.Http_header.http_header = {
            mode : Predefined_senders.Text_sender.H.http_mode;
            meth : Predefined_senders.Text_sender.H.http_method option;
            url : string option;
            code : int option;
            proto : string;
            headers : (string * string) list;
          }
          val get_url :
            Predefined_senders.Text_sender.H.http_header -> string
          val get_headers_value :
            Predefined_senders.Text_sender.H.http_header -> string -> string
          val get_proto :
            Predefined_senders.Text_sender.H.http_header -> string
          val get_method :
            Predefined_senders.Text_sender.H.http_header ->
            Predefined_senders.Text_sender.H.http_method option
          val add_headers :
            Predefined_senders.Text_sender.H.http_header ->
            string -> string -> Predefined_senders.Text_sender.H.http_header
        end
      module Http :
        sig
          type frame_content = Predefined_senders.Text_content.t option
          type http_frame =
            Http_frame.FHttp_frame(Text_content).http_frame = {
            header : Http_frame.Http_header.http_header;
            content : Predefined_senders.Text_sender.Http.frame_content;
            waiter_thread : unit Lwt.t;
          }
        end
      module PP :
        sig
          module Http :
            sig
              type frame_content = Predefined_senders.Text_content.t option
              type http_frame =
                Http_frame.FHttp_frame(Text_content).http_frame = {
                header : Http_frame.Http_header.http_header;
                content :
                  Predefined_senders.Text_sender.PP.Http.frame_content;
                waiter_thread : unit Lwt.t;
              }
            end
          val string_of_http_frame :
            Predefined_senders.Text_sender.PP.Http.http_frame ->
            string option -> string
        end
      type t = Http_com.sender_type
      val really_write :
        Lwt_unix.descr -> (unit -> unit) -> Ocsistream.stream -> unit Lwt.t
      val change_protocol : string -> Http_com.sender_type -> unit
      val change_headers :
        (string * string) list -> Http_com.sender_type -> unit
      val change_mode :
        Http_frame.Http_header.http_mode -> Http_com.sender_type -> unit
      val non_case_equality : string -> string -> bool
      val non_case_compare : string -> string -> int
      val pair_order : string * string -> string * string -> bool
      val add_header : Http_com.sender_type -> string -> string -> unit
      val rem_header : Http_com.sender_type -> string -> unit
      val get_protocol : Http_com.sender_type -> string
      val get_mode : Http_com.sender_type -> Http_frame.Http_header.http_mode
      val get_headers : Http_com.sender_type -> (string * string) list
      val get_header_value : Http_com.sender_type -> string -> string
      val hds_fusion :
        int64 option ->
        (string * string) list ->
        (string * string) list -> (string * string) list
      val send :
        unit Lwt.t ->
        ?etag:Http_frame.etag ->
        ?mode:Predefined_senders.Text_sender.H.http_mode ->
        ?proto:string ->
        ?headers:(string * string) list ->
        ?meth:Predefined_senders.Text_sender.H.http_method ->
        ?url:string ->
        ?code:int ->
        ?content:Predefined_senders.Text_content.t ->
        ?head:bool -> Http_com.sender_type -> unit Lwt.t
    end
  module Text_receiver :
    sig
      module Http :
        sig
          type frame_content = Predefined_senders.Text_content.t option
          type http_frame =
            Http_frame.FHttp_frame(Text_content).http_frame = {
            header : Http_frame.Http_header.http_header;
            content : Predefined_senders.Text_receiver.Http.frame_content;
            waiter_thread : unit Lwt.t;
          }
        end
      type t =
        Http_com.FHttp_receiver(Text_content).t = {
        buffer : Http_com.Com_buffer.t;
        fd : Lwt_unix.descr;
      }
      val create : Lwt_unix.descr -> Predefined_senders.Text_receiver.t
      val http_header_of_stream :
        Ocsistream.stream -> Http_frame.Http_header.http_header Lwt.t
      val get_http_frame :
        unit Lwt.t ->
        Predefined_senders.Text_receiver.t ->
        doing_keep_alive:bool ->
        unit -> Predefined_senders.Text_receiver.Http.http_frame Lwt.t
    end
  module Stream_http_frame :
    sig
      type frame_content = Predefined_senders.Stream_content.t option
      type http_frame =
        Http_frame.FHttp_frame(Stream_content).http_frame = {
        header : Http_frame.Http_header.http_header;
        content : Predefined_senders.Stream_http_frame.frame_content;
        waiter_thread : unit Lwt.t;
      }
    end
  module Stream_receiver :
    sig
      module Http :
        sig
          type frame_content = Predefined_senders.Stream_content.t option
          type http_frame =
            Http_frame.FHttp_frame(Stream_content).http_frame = {
            header : Http_frame.Http_header.http_header;
            content : Predefined_senders.Stream_receiver.Http.frame_content;
            waiter_thread : unit Lwt.t;
          }
        end
      type t =
        Http_com.FHttp_receiver(Stream_content).t = {
        buffer : Http_com.Com_buffer.t;
        fd : Lwt_unix.descr;
      }
      val create : Lwt_unix.descr -> Predefined_senders.Stream_receiver.t
      val http_header_of_stream :
        Ocsistream.stream -> Http_frame.Http_header.http_header Lwt.t
      val get_http_frame :
        unit Lwt.t ->
        Predefined_senders.Stream_receiver.t ->
        doing_keep_alive:bool ->
        unit -> Predefined_senders.Stream_receiver.Http.http_frame Lwt.t
    end
  module File_sender :
    sig
      module H :
        sig
          type http_mode = Http_frame.Http_header.http_mode = Query | Answer
          type http_method =
            Http_frame.Http_header.http_method =
              GET
            | POST
            | HEAD
            | PUT
            | DELETE
            | TRACE
            | OPTIONS
            | CONNECT
            | LINK
            | UNLINK
            | PATCH
          type http_header =
            Http_frame.Http_header.http_header = {
            mode : Predefined_senders.File_sender.H.http_mode;
            meth : Predefined_senders.File_sender.H.http_method option;
            url : string option;
            code : int option;
            proto : string;
            headers : (string * string) list;
          }
          val get_url :
            Predefined_senders.File_sender.H.http_header -> string
          val get_headers_value :
            Predefined_senders.File_sender.H.http_header -> string -> string
          val get_proto :
            Predefined_senders.File_sender.H.http_header -> string
          val get_method :
            Predefined_senders.File_sender.H.http_header ->
            Predefined_senders.File_sender.H.http_method option
          val add_headers :
            Predefined_senders.File_sender.H.http_header ->
            string -> string -> Predefined_senders.File_sender.H.http_header
        end
      module Http :
        sig
          type frame_content = Predefined_senders.File_content.t option
          type http_frame =
            Http_frame.FHttp_frame(File_content).http_frame = {
            header : Http_frame.Http_header.http_header;
            content : Predefined_senders.File_sender.Http.frame_content;
            waiter_thread : unit Lwt.t;
          }
        end
      module PP :
        sig
          module Http :
            sig
              type frame_content = Predefined_senders.File_content.t option
              type http_frame =
                Http_frame.FHttp_frame(File_content).http_frame = {
                header : Http_frame.Http_header.http_header;
                content :
                  Predefined_senders.File_sender.PP.Http.frame_content;
                waiter_thread : unit Lwt.t;
              }
            end
          val string_of_http_frame :
            Predefined_senders.File_sender.PP.Http.http_frame ->
            string option -> string
        end
      type t = Http_com.sender_type
      val really_write :
        Lwt_unix.descr -> (unit -> unit) -> Ocsistream.stream -> unit Lwt.t
      val change_protocol : string -> Http_com.sender_type -> unit
      val change_headers :
        (string * string) list -> Http_com.sender_type -> unit
      val change_mode :
        Http_frame.Http_header.http_mode -> Http_com.sender_type -> unit
      val non_case_equality : string -> string -> bool
      val non_case_compare : string -> string -> int
      val pair_order : string * string -> string * string -> bool
      val add_header : Http_com.sender_type -> string -> string -> unit
      val rem_header : Http_com.sender_type -> string -> unit
      val get_protocol : Http_com.sender_type -> string
      val get_mode : Http_com.sender_type -> Http_frame.Http_header.http_mode
      val get_headers : Http_com.sender_type -> (string * string) list
      val get_header_value : Http_com.sender_type -> string -> string
      val hds_fusion :
        int64 option ->
        (string * string) list ->
        (string * string) list -> (string * string) list
      val send :
        unit Lwt.t ->
        ?etag:Http_frame.etag ->
        ?mode:Predefined_senders.File_sender.H.http_mode ->
        ?proto:string ->
        ?headers:(string * string) list ->
        ?meth:Predefined_senders.File_sender.H.http_method ->
        ?url:string ->
        ?code:int ->
        ?content:Predefined_senders.File_content.t ->
        ?head:bool -> Http_com.sender_type -> unit Lwt.t
    end
  val gmtdate : float -> string
  val send_generic :
    unit Lwt.t ->
    ?code:int ->
    ?etag:Http_frame.etag ->
    ?cookies:Predefined_senders.mycookieslist ->
    keep_alive:bool ->
    ?last_modified:float ->
    ?contenttype:string ->
    ?charset:string ->
    ?location:string ->
    ?header:(string * string) list ->
    ?head:bool ->
    content:'->
    '->
    (unit Lwt.t ->
     ?etag:Http_frame.etag ->
     ?mode:Predefined_senders.Xhtml_sender.H.http_mode ->
     ?proto:string ->
     ?headers:(string * string) list ->
     ?meth:'->
     ?url:string ->
     ?code:int -> ?content:'-> ?head:bool -> '-> unit Lwt.t) ->
    unit Lwt.t
  val mimeht : (string, string) Hashtbl.t
  val parse_mime_types : string -> unit
  val affiche_mime : unit -> unit
  val content_type_from_file_name :
    Predefined_senders.File_content.t -> string
end