Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*)
+ (** HTTP version, actually only 1.0 and 1.1 are supported. Note that
+ 'supported' here means only 'accepted inside a HTTP request line', no
+ different behaviours are actually implemented depending on HTTP version *)
type version =
[ `HTTP_1_0
| `HTTP_1_1
]
+ (** HTTP method, actually only GET and POST methods are supported *)
type meth =
[ `GET
| `POST
]
+ (** Daemon behaviour wrt request handling. `Single mode use a single process
+ to handle all requests, no request is served until a previous one has been
+ fully served. `Fork mode fork a new process for each request, the new process
+ will execute the callback function and then exit. `Thread mode create a new
+ thread for each request, the new thread will execute the callback function and
+ then exit, threads can communicate using standard OCaml Thread library. *)
type daemon_mode = [ `Single | `Fork | `Thread ]
type tcp_server =
exception Invalid_status_line of string
exception Header_not_found of string
+ (** raisable by callback functions to make main daemon quit, this is the only
+ 'clean' way to make start functions return *)
+exception Quit
+
class type message = object
method version: version
method addBody: string -> unit
method addBodyBuf: Buffer.t -> unit
+ (** header name comparison are performed in a case-insensitive manner as
+ required by RFC2616, actually the implementation works converting all header
+ names in lowercase *)
+
method addHeader: name:string -> value:string -> unit
method addHeaders: (string * string) list -> unit
method replaceHeader: name:string -> value:string -> unit