diff options
author | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-01-28 19:03:53 +0000 |
---|---|---|
committer | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-01-28 19:03:53 +0000 |
commit | 004dec2c2f44a0db510dfd65e5ffd8c9fc4ff83e (patch) | |
tree | a8b7de6debeb447af5479bf156706d09fe748ab4 /ext/http11/http11_parser.h | |
parent | b6d34b2a4191a3118c7c70ea49349e89e581ed91 (diff) | |
download | unicorn-004dec2c2f44a0db510dfd65e5ffd8c9fc4ff83e.tar.gz |
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@4 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'ext/http11/http11_parser.h')
-rw-r--r-- | ext/http11/http11_parser.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/ext/http11/http11_parser.h b/ext/http11/http11_parser.h new file mode 100644 index 0000000..f4a205f --- /dev/null +++ b/ext/http11/http11_parser.h @@ -0,0 +1,37 @@ +#ifndef http11_parser_h +#define http11_parser_h + +#include <sys/types.h> + +typedef void (*element_cb)(void *data, const char *at, size_t length); +typedef void (*field_cb)(void *data, const char *field, size_t flen, const char *value, size_t vlen); + +typedef struct http_parser { + int cs; + const char *body_start; + int content_len; + size_t nread; + const char *mark; + const char *field_start; + size_t field_len; + + void *data; + + field_cb http_field; + element_cb request_method; + element_cb path_info; + element_cb query_string; + element_cb http_version; + +} http_parser; + +int http_parser_init(http_parser *parser); +int http_parser_finish(http_parser *parser); +size_t http_parser_execute(http_parser *parser, const char *data, size_t len ); +int http_parser_has_error(http_parser *parser); +int http_parser_is_finished(http_parser *parser); +void http_parser_destroy(http_parser *parser); + +#define http_parser_nread(parser) (parser)->nread + +#endif |