summaryrefslogtreecommitdiff
path: root/src/protocol_decoder/http/http_entry.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol_decoder/http/http_entry.h')
-rw-r--r--src/protocol_decoder/http/http_entry.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/protocol_decoder/http/http_entry.h b/src/protocol_decoder/http/http_entry.h
new file mode 100644
index 0000000..7d3b384
--- /dev/null
+++ b/src/protocol_decoder/http/http_entry.h
@@ -0,0 +1,72 @@
+#ifndef _HTTP_ENTRY_H
+#define _HTTP_ENTRY_H
+
+#ifdef __cpluscplus
+extern "C"
+{
+#endif
+
+#include "session.h"
+
+struct http_string
+{
+ char *str;
+ size_t len;
+};
+
+struct http_request_line
+{
+ struct http_string method;
+ struct http_string uri;
+ struct http_string version;
+
+ int major_version;
+ int minor_version;
+};
+
+struct http_response_line
+{
+ struct http_string version;
+ struct http_string status;
+
+ int major_version;
+ int minor_version;
+ int status_code;
+};
+
+struct http_decoder;
+
+/******************************************************************************
+ * For HTTP consumer
+ ******************************************************************************/
+
+void http_session_get_request_line(struct stellar_session *http_session, struct http_request_line *line);
+void http_session_get_response_line(struct stellar_session *http_session, struct http_response_line *line);
+
+void http_session_get_request_raw_body(struct stellar_session *http_session, struct http_string *body);
+void http_session_get_response_raw_body(struct stellar_session *http_session, struct http_string *body);
+
+void http_session_get_request_decompress_body(struct stellar_session *http_session, struct http_string *body);
+void http_session_get_response_decompress_body(struct stellar_session *http_session, struct http_string *body);
+
+size_t http_session_get_request_header(struct stellar_session *http_session, struct http_string *header_key, struct http_string header_val[], size_t val_size);
+size_t http_session_get_response_header(struct stellar_session *http_session, struct http_string *header_key, struct http_string header_val[], size_t val_size);
+
+void http_session_iter_request_header(struct stellar_session *http_session, size_t *iter_index, struct http_string *header_key, struct http_string *header_val);
+void http_session_iter_response_header(struct stellar_session *http_session, size_t *iter_index, struct http_string *header_key, struct http_string *header_val);
+
+/******************************************************************************
+ * For HTTP decoder
+ ******************************************************************************/
+
+void http_entry(struct stellar_session *tcp_session, const char *tcp_event, int thread_id);
+
+/******************************************************************************
+ * For gtest
+ ******************************************************************************/
+
+#ifdef __cpluscplus
+}
+#endif
+
+#endif