*.修改帧处理方式
*.删除同一流中多ID遍历模式 *.添加函数指针数组管理不同帧回调 *.添加流处理打印
This commit is contained in:
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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*/
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
@@ -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));
|
||||||
|
|||||||
2
vendor/CMakeLists.txt
vendored
2
vendor/CMakeLists.txt
vendored
@@ -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)
|
||||||
|
|
||||||
|
|||||||
BIN
vendor/nghttp2-1.24.0.tar.gz
vendored
BIN
vendor/nghttp2-1.24.0.tar.gz
vendored
Binary file not shown.
Reference in New Issue
Block a user