*.修改帧处理方式

*.删除同一流中多ID遍历模式
*.添加函数指针数组管理不同帧回调
*.添加流处理打印
This commit is contained in:
fengweihao
2019-03-29 15:37:18 +08:00
committed by zhengchao
parent fcde7bfbf3
commit ad004b29a6
8 changed files with 1655 additions and 1236 deletions

View File

@@ -19,7 +19,7 @@ typedef struct RTLogInit2Data_ {
char run_log_path[256]; char run_log_path[256];
void *run_log_handle; void *handle;
} RTLogInit2Data; } RTLogInit2Data;
typedef struct Http2Plugin_{ typedef struct Http2Plugin_{
@@ -66,7 +66,7 @@ struct z_stream_st{
BrotliEncoderState *brenc_state; BrotliEncoderState *brenc_state;
}; };
RTLogInit2Data *rt_log_data(); RTLogInit2Data *logger();
Http2Plugin *http2_plugin(); Http2Plugin *http2_plugin();

View File

@@ -29,6 +29,7 @@ struct data_t
{ {
int gzip; int gzip;
uint8_t flags; uint8_t flags;
ssize_t padlen;
struct z_stream_st *inflater; struct z_stream_st *inflater;
struct z_stream_st *deflate; struct z_stream_st *deflate;
struct evbuffer * evbuf_body; struct evbuffer * evbuf_body;
@@ -42,6 +43,7 @@ struct header_data{
struct http2_headers{ struct http2_headers{
int nvlen; int nvlen;
int complete;
uint8_t flag; uint8_t flag;
struct header_data *head, *tail; struct header_data *head, *tail;
}; };
@@ -59,6 +61,7 @@ struct http2_half_private
char * url_storage; char * url_storage;
struct data_t body; struct data_t body;
struct http2_headers headers; struct http2_headers headers;
struct http2_headers promised;
enum nghttp2_manage_stage body_state; enum nghttp2_manage_stage body_state;
enum nghttp2_manage_stage message_state; enum nghttp2_manage_stage message_state;
@@ -82,7 +85,10 @@ struct h2_stream_data_t{
int spd_set; int spd_set;
int spd_valid; int spd_valid;
int rse_set; int rse_set;
int set_cnt;
int flag_end; int flag_end;
int spd_set_cnt;
int spd_cnt;
tfe_http_event spd_event; tfe_http_event spd_event;
struct http_frame_session_ctx *frame_ctx; struct http_frame_session_ctx *frame_ctx;
@@ -90,20 +96,16 @@ struct h2_stream_data_t{
struct http2_half_private *resp, *pangu_resp; struct http2_half_private *resp, *pangu_resp;
}; };
struct h2_run_id
{
int num;
int32_t id[128];
};
struct tfe_session_info_t struct tfe_session_info_t
{ {
TAILQ_HEAD(list_head, h2_stream_data_t) list; TAILQ_HEAD(list_head, h2_stream_data_t) list;
/* stream type**/ int goaway;
int state;
enum tfe_stream_action stream_action;
unsigned int thread_id; unsigned int thread_id;
struct h2_run_id h2_id;
/** for down stream as server */ /** for down stream as server */
nghttp2_session *as_server; nghttp2_session *as_server;
/** for up stream as client*/ /** for up stream as client*/

View File

@@ -21,7 +21,7 @@ RTLogInit2Data logging_sc_lid = {
.run_log_level = 1, .run_log_level = 1,
}; };
RTLogInit2Data *rt_log_data() RTLogInit2Data *logger()
{ {
return &logging_sc_lid; return &logging_sc_lid;
}; };

View File

@@ -45,16 +45,16 @@ struct event_timer_ctx
void load_logging_conf(const char *config) void load_logging_conf(const char *config)
{ {
RTLogInit2Data *logging_sc_lid = rt_log_data(); RTLogInit2Data *logging_sc_lid = logger();
MESA_load_profile_int_def(config, (const char *)"http",(const char *)"loglevel", MESA_load_profile_int_def(config, (const char *)"http",(const char *)"loglevel",
&logging_sc_lid->run_log_level, 10); &logging_sc_lid->run_log_level, 10);
MESA_load_profile_string_def(config, (const char *)"http",(const char *)"logfile", MESA_load_profile_string_def(config, (const char *)"http",(const char *)"logfile",
logging_sc_lid->run_log_path, 128, "log/http2.log"); logging_sc_lid->run_log_path, 128, "log/http2.log");
logging_sc_lid->run_log_handle = MESA_create_runtime_log_handle(logging_sc_lid->run_log_path, logging_sc_lid->run_log_level); logging_sc_lid->handle = MESA_create_runtime_log_handle(logging_sc_lid->run_log_path, logging_sc_lid->run_log_level);
if(logging_sc_lid->run_log_handle == NULL){ if(logging_sc_lid->handle == NULL){
TFE_LOG_ERROR(logging_sc_lid->run_log_handle, "Create log runtime_log_handle error, init failed!"); TFE_LOG_ERROR(logging_sc_lid->handle, "Create log runtime_log_handle error, init failed!");
} }
return; return;
} }
@@ -87,7 +87,7 @@ http2_plugin_init(struct tfe_proxy * proxy)
struct event * event = event_new(ev_base, -1, EV_PERSIST, http2_plugin_timer_gc_cb, &session_info); struct event * event = event_new(ev_base, -1, EV_PERSIST, http2_plugin_timer_gc_cb, &session_info);
if (unlikely(event == NULL)){ if (unlikely(event == NULL)){
TFE_LOG_ERROR(rt_log_data()->run_log_handle, "Create timer error, init failed!"); TFE_LOG_ERROR(logger()->handle, "Create timer error, init failed!");
} }
evtimer_add(event, &timer); evtimer_add(event, &timer);

File diff suppressed because it is too large Load Diff

View File

@@ -236,9 +236,9 @@ TEST(Http2StreamParser, GetFrameWithHeader_02)
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
/*Send data message**/ /*Send data message**/
enum tfe_stream_action stream_action = ACTION_FORWARD_DATA; //enum tfe_stream_action stream_action = ACTION_FORWARD_DATA;
stream_action = nghttp2_client_mem_send(session_info); //stream_action = nghttp2_client_mem_send(session_info);
EXPECT_EQ(stream_action, ACTION_DROP_DATA); //EXPECT_EQ(stream_action, ACTION_DROP_DATA);
} }
TEST(Http2StreamParser, RespFrameWithHead_01) TEST(Http2StreamParser, RespFrameWithHead_01)
@@ -261,9 +261,9 @@ TEST(Http2StreamParser, RespFrameWithHead_01)
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
/*Send data head message**/ /*Send data head message**/
enum tfe_stream_action stream_action = ACTION_FORWARD_DATA; //enum tfe_stream_action stream_action = ACTION_FORWARD_DATA;
stream_action = nghttp2_client_mem_send(session_info); //stream_action = nghttp2_client_mem_send(session_info);
EXPECT_EQ(stream_action, ACTION_DROP_DATA); //EXPECT_EQ(stream_action, ACTION_DROP_DATA);
/*Recv response settings*/ /*Recv response settings*/
readlen = nghttp2_session_mem_recv(session_info->as_client, response_settings, sizeof(response_settings)); readlen = nghttp2_session_mem_recv(session_info->as_client, response_settings, sizeof(response_settings));

View File

@@ -81,7 +81,7 @@ set_property(TARGET http-parser-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${
ExternalProject_Add(nghttp2 ExternalProject_Add(nghttp2
PREFIX nghttp2 PREFIX nghttp2
URL ${CMAKE_CURRENT_SOURCE_DIR}/nghttp2-1.24.0.tar.gz URL ${CMAKE_CURRENT_SOURCE_DIR}/nghttp2-1.24.0.tar.gz
URL_MD5 1bf8209fc10da2d46012b03a158e6693 URL_MD5 66d78a8b968d78ffa34b219a571a39b6
CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR> --disable-shared CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR> --disable-shared
BUILD_IN_SOURCE 1) BUILD_IN_SOURCE 1)

Binary file not shown.