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
{
31 element_cb request_method
;
32 element_cb request_uri
;
34 element_cb request_path
;
35 element_cb query_string
;
36 element_cb http_version
;
37 element_cb header_done
;
41 int http_parser_init(http_parser
*parser
);
42 int http_parser_finish(http_parser
*parser
);
43 size_t http_parser_execute(http_parser
*parser
, const char *data
, size_t len
, size_t off
);
44 int http_parser_has_error(http_parser
*parser
);
45 int http_parser_is_finished(http_parser
*parser
);
47 #define http_parser_nread(parser) (parser)->nread