| In_payload of Payload.state
| Done
+ type header_callback = Request_header.t -> Request_header.t
+
type state =
{
mutable cursor: cursor;
mutable s_request: Request_header.t option;
- mutable num_bytes_parsed: int64
+ mutable num_bytes_parsed: int64;
+ header_callback: header_callback option;
}
type error =
let raise_error err = raise (Http_error err)
- let init_state () =
+ let init_state ?header_callback () =
{
cursor = In_request_header (Request_header.init_state ());
s_request = None;
- num_bytes_parsed = 0L
+ num_bytes_parsed = 0L;
+ header_callback = header_callback
}
let num_bytes_parsed s =
| In_request_header rs ->
(match Request_header.parse_substring rs str ofs len with
| Request_header.Result (v, consumed) ->
+ let v = (match state.header_callback with
+ | None -> v
+ | Some f -> f v
+ ) in
state.s_request <- Some v;
state.num_bytes_parsed <- Int64.of_int (Request_header.num_bytes_parsed rs);
(match Payload.init_from_request v with
| In_payload of Payload.state
| Done
+ type header_callback = Response_header.t -> Response_header.t
+
type state =
{
mutable cursor: cursor;
mutable s_response: Response_header.t option;
- mutable num_bytes_parsed: int64
+ mutable num_bytes_parsed: int64;
+ header_callback: header_callback option;
}
type error =
let raise_error err = raise (Http_error err)
- let init_state () =
+ let init_state ?header_callback () =
{
cursor = In_response_header (Response_header.init_state ());
s_response = None;
- num_bytes_parsed = 0L
+ num_bytes_parsed = 0L;
+ header_callback = header_callback;
}
let num_bytes_parsed s =
| In_response_header rs ->
(match Response_header.parse rs str with
| Response_header.Result (v, consumed) ->
+ let v = (match state.header_callback with
+ | None -> v
+ | Some f -> f v
+ ) in
state.s_response <- Some v;
state.num_bytes_parsed <- Int64.of_int (Response_header.num_bytes_parsed rs);
(match Payload.init_from_response v with
module Request : sig
type state
- val init_state : unit -> state
+ type header_callback = Request_header.t -> Request_header.t
+
+ val init_state : ?header_callback:header_callback -> unit -> state
val num_bytes_parsed : state -> int64
type error
module Response : sig
type state
- val init_state : unit -> state
+ type header_callback = Response_header.t -> Response_header.t
+
+ val init_state : ?header_callback:header_callback -> unit -> state
val num_bytes_parsed : state -> int64
type error = Internal_error of string