2 * Copyright (c) 2005 Zed A. Shaw
3 * You can redistribute it and/or modify it under the same terms as Ruby.
6 #ifndef http11_parser_h
7 #define http11_parser_h
15 typedef void (*element_cb
)(void *data
, const char *at
, size_t length
);
16 typedef void (*field_cb
)(void *data
, const char *field
, size_t flen
, const char *value
, size_t vlen
);
18 typedef struct http_parser
{
32 element_cb request_method
;
33 element_cb request_uri
;
35 element_cb request_path
;
36 element_cb query_string
;
37 element_cb http_version
;
38 element_cb header_done
;
39 element_cb content_length
;
42 void http_parser_init(http_parser
*parser
);
43 int http_parser_finish(http_parser
*parser
);
44 size_t http_parser_execute(http_parser
*parser
, const char *data
, size_t len
, size_t off
);
45 int http_parser_has_error(http_parser
*parser
);
46 int http_parser_is_finished(http_parser
*parser
);
48 #define http_parser_nread(parser) (parser)->nread