Refactored pm_session_dettach_others to pm_session_take_over

This commit is contained in:
luwenpeng
2022-08-08 14:19:32 +08:00
parent fd2a67e0eb
commit 0f7468b994
20 changed files with 91 additions and 143 deletions

View File

@@ -42,17 +42,20 @@ Plugin Management APIs
```
/*
* The plugin manager just set the skip flag and don't call this event callback next.
* The pm_session_dettach_me just sets the flag to disable this plugin and no longer call this event callback.
* Before calling pm_session_dettach_me, the current plugin must release related resources for the current session.
*/
pm_session_dettach_me(session);
/*
* The plugin manager uses ERROR_EVENT_DETTACH to call other plugin error callbacks,
* and when the plugin error callback handler is called,
* the error callback handler must release the relevant resources for the current session.
* The current plugin takes over the current session, the pm_session_take_over setting flag disables other plugins,
* and the current session does not call other plugins except for the SESSION_EVENT_CLOSING event.
*
* The current plugin may be taken over while the session is open (SESSION_EVENT_OPENING),
* other plugins event_cb is not called, the session pme on other plugins is NULL,
* When the session is closed (SESSION_EVENT_CLOSING), call other plugin even_cb to destroy pme must check if pme is NULL.
*/
pm_session_dettach_others(session);
pm_session_take_over(session);
```
## Session Manager
@@ -82,7 +85,7 @@ plugin_entry(session, pme)
ret=check_security_policy(session);
if(ret==INTERCEPT)
{
pm_session_dettach_others(session);
pm_session_take_over(session);
}
else if(ret==RATE_LIMIT)
{

View File

@@ -56,23 +56,6 @@ static void custom_session_pme_destory(struct custom_session_pme *pme)
}
}
extern "C" void custom_event_plugin_error(const struct stellar_session *session, enum error_event_type event, void **pme)
{
if (strcmp(stellar_session_get_name(session), "TCP") == 0)
{
struct tcp_session_pme **per_tcp_session_pme = (struct tcp_session_pme **)pme;
printf("RUN custom_event_plugin_error, session_name: 'TCP', error_event_type: %d, pme->data: %s\n", event, (*per_tcp_session_pme) == NULL ? "NULL" : (*per_tcp_session_pme)->data);
tcp_session_pme_destory(*per_tcp_session_pme);
}
if (strcmp(stellar_session_get_name(session), "CUSTOM") == 0)
{
struct custom_session_pme **per_custom_session_pme = (struct custom_session_pme **)pme;
printf("RUN custom_event_plugin_error, session_name: 'CUSTOM', error_event_type: %d, pme->data: %s\n", event, (*per_custom_session_pme) == NULL ? "NULL" : (*per_custom_session_pme)->data);
custom_session_pme_destory(*per_custom_session_pme);
}
}
extern "C" void custom_event_plugin_tcp_entry(const struct stellar_session *session, enum session_event_type event, struct stellar_packet *p, const char *payload, uint16_t len, void **pme)
{
struct tcp_session_pme **per_tcp_session_pme = (struct tcp_session_pme **)pme;

View File

@@ -29,16 +29,6 @@ static void http_session_pme_destory(struct http_session_pme *pme)
}
}
extern "C" void http_event_plugin_error(const struct stellar_session *session, enum error_event_type event, void **pme)
{
if (strcmp(stellar_session_get_name(session), "HTTP") == 0)
{
struct http_session_pme **per_http_session_pme = (struct http_session_pme **)pme;
printf("RUN http_event_plugin_error, session_name: 'HTTP', error_event_type: %d, pme->data: %s\n", event, (*per_http_session_pme) == NULL ? "NULL" : (*per_http_session_pme)->data);
http_session_pme_destory(*per_http_session_pme);
}
}
extern "C" void http_event_plugin_entry(const struct stellar_session *session, enum session_event_type event, struct stellar_packet *p, const char *payload, uint16_t len, void **pme)
{
struct http_session_pme **per_http_session_pme = (struct http_session_pme **)pme;
@@ -64,7 +54,7 @@ extern "C" void http_event_plugin_entry(const struct stellar_session *session, e
if (event & SESSION_EVENT_ORDPKT)
{
// TODO
pm_session_dettach_others(session);
pm_session_take_over(session);
}
if (event & SESSION_EVENT_META)

View File

@@ -1,7 +1,6 @@
[PLUGINFO]
INIT_FUNC="custom_event_plugin_init"
EXIT_FUNC="custom_event_plugin_exit"
ERROR_FUNC="custom_event_plugin_error"
LIBRARY_PATH="./plugins/custom_event_plugin/custom_event_plugin.so"
# Support SESSION_EVENT_TYPE: "SESSION_EVENT_OPENING", "SESSION_EVENT_RAWPKT", "SESSION_EVENT_ORDPKT", "SESSION_EVENT_META", "SESSION_EVENT_CLOSING", "SESSION_EVENT_ALL"

View File

@@ -1,7 +1,6 @@
[PLUGINFO]
INIT_FUNC="http_event_plugin_init"
EXIT_FUNC="http_event_plugin_exit"
ERROR_FUNC="http_event_plugin_error"
LIBRARY_PATH="./plugins/http_event_plugin/http_event_plugin.so"
# Support SESSION_EVENT_TYPE: "SESSION_EVENT_OPENING", "SESSION_EVENT_RAWPKT", "SESSION_EVENT_ORDPKT", "SESSION_EVENT_META", "SESSION_EVENT_CLOSING", "SESSION_EVENT_ALL"

View File

@@ -2,5 +2,4 @@
#include "session.h"
void http_decoder(const struct stellar_session *s, enum session_event_type event, struct stellar_packet *p, const char *payload, uint16_t len, void **pme);
void http_error_cb(const struct stellar_session *s, enum error_event_type event, void **pme);
void http_decoder(const struct stellar_session *s, enum session_event_type event, struct stellar_packet *p, const char *payload, uint16_t len, void **pme);

View File

@@ -15,8 +15,21 @@ typedef void plugin_exit_callback(void);
* Public API For Plugin
******************************************************************************/
/*
* The pm_session_dettach_me just sets the flag to disable this plugin and no longer call this event callback.
* Before calling pm_session_dettach_me, the current plugin must release related resources for the current session.
*/
void pm_session_dettach_me(const struct stellar_session *session);
void pm_session_dettach_others(const struct stellar_session *session);
/*
* The current plugin takes over the current session, the pm_session_take_over setting flag disables other plugins,
* and the current session does not call other plugins except for the SESSION_EVENT_CLOSING event.
*
* The current plugin may be taken over while the session is open (SESSION_EVENT_OPENING),
* other plugins event_cb is not called, the session pme on other plugins is NULL,
* When the session is closed (SESSION_EVENT_CLOSING), call other plugin even_cb to destroy pme must check if pme is NULL.
*/
void pm_session_take_over(const struct stellar_session *session);
#ifdef __cpluscplus
}

View File

@@ -40,14 +40,8 @@ enum session_event_type
SESSION_EVENT_ALL = (0x01 << 1 | 0x01 << 2 | 0x01 << 3 | 0x01 << 4 | 0x01 << 5),
};
enum error_event_type
{
ERROR_EVENT_DETTACH = (0x1 << 10),
};
struct stellar_session_event_extras;
typedef void(fn_session_error_callback)(const struct stellar_session *s, enum error_event_type event, void **pme);
typedef void(fn_session_event_callback)(const struct stellar_session *s, enum session_event_type event, struct stellar_packet *p, const char *payload, uint16_t len, void **pme);
void session_manager_trigger_event(struct stellar_session *s, enum session_event_type type, struct stellar_session_event_extras *info);

View File

@@ -59,7 +59,7 @@ int main(int argc, char ** argv)
struct plugin_manager *plug_mgr = plugin_manager_create();
// register build-in plugin
plugin_manager_register(plug_mgr, "HTTP", SESSION_EVENT_ALL, http_decoder, http_error_cb);
plugin_manager_register(plug_mgr, "HTTP", SESSION_EVENT_ALL, http_decoder);
// load external plugins
char file_path[] = "./plugs/plugins.inf";

View File

@@ -10,14 +10,20 @@
* CallBack Runtime (For Per Session)
******************************************************************************/
enum plugin_status
{
PLUGIN_STATUS_NORMAL = 0x00,
PLUGIN_STATUS_DETTACH_ME = 0x01,
PLUGIN_STATUS_TAKEN_OVER = 0x02, // Noitce: this is taken over not take over
};
struct callback_runtime
{
int skip;
enum plugin_status status;
void *cb_args;
enum session_event_type event;
fn_session_event_callback *event_cb;
fn_session_error_callback *error_cb;
};
struct session_plugin_ctx
@@ -35,7 +41,6 @@ struct callback_static
{
enum session_event_type event;
fn_session_event_callback *event_cb;
fn_session_error_callback *error_cb;
};
struct plugin_manager_eventcb
@@ -90,10 +95,9 @@ static struct session_plugin_ctx *plugin_manager_create_plugin_ctx(struct plugin
for (int i = 0; i < plug_ctx->callback_num; i++)
{
plug_ctx->callbacks[i].skip = 0;
plug_ctx->callbacks[i].status = PLUGIN_STATUS_NORMAL;
plug_ctx->callbacks[i].event = elem->callbacks[i].event;
plug_ctx->callbacks[i].event_cb = elem->callbacks[i].event_cb;
plug_ctx->callbacks[i].error_cb = elem->callbacks[i].error_cb;
plug_ctx->callbacks[i].cb_args = NULL;
}
@@ -336,7 +340,7 @@ void plugin_manager_destory(struct plugin_manager *plug_mgr)
}
}
int plugin_manager_register(struct plugin_manager *plug_mgr, const char *session_name, enum session_event_type event, fn_session_event_callback *event_cb, fn_session_error_callback *error_cb)
int plugin_manager_register(struct plugin_manager *plug_mgr, const char *session_name, enum session_event_type event, fn_session_event_callback *event_cb)
{
if (strlen(session_name) <= 0)
{
@@ -356,12 +360,6 @@ int plugin_manager_register(struct plugin_manager *plug_mgr, const char *session
return -1;
}
if (error_cb == NULL)
{
plugin_manager_log(ERROR, "invalid parameter, the error callback corresponding to the session name '%s' is null", session_name);
return -1;
}
struct plugin_manager_eventcb *elem;
HASH_FIND_STR(plug_mgr->evcb_htable, session_name, elem);
// session_name exists, add a new cb to the end of the callbacks dynamic array
@@ -371,7 +369,6 @@ int plugin_manager_register(struct plugin_manager *plug_mgr, const char *session
elem->callbacks[elem->callback_num].event = event;
elem->callbacks[elem->callback_num].event_cb = event_cb;
elem->callbacks[elem->callback_num].error_cb = error_cb;
elem->callback_num++;
}
@@ -385,7 +382,6 @@ int plugin_manager_register(struct plugin_manager *plug_mgr, const char *session
elem->callbacks[elem->callback_num].event = event;
elem->callbacks[elem->callback_num].event_cb = event_cb;
elem->callbacks[elem->callback_num].error_cb = error_cb;
elem->callback_num++;
@@ -431,17 +427,43 @@ void plugin_manager_dispatch(struct plugin_manager *plug_mgr, struct stellar_eve
for (int i = 0; i < plug_ctx->callback_num; i++)
{
struct callback_runtime *runtime = &plug_ctx->callbacks[i];
if (runtime->skip == 1)
if (runtime->status == PLUGIN_STATUS_DETTACH_ME)
{
plugin_manager_log(DEBUG, "dispatch, skip event_cb: %p, session: %s, event: (%d, %s)", runtime->event_cb, session_name, event_type, event_str_buffer);
plugin_manager_log(DEBUG, "dispatch, skip event_cb: %p, plugin status: 'dettach me', session: %s, event: (%d, %s)", runtime->event_cb, session_name, event_type, event_str_buffer);
continue;
}
if (runtime->event & event_type)
else if (runtime->status == PLUGIN_STATUS_TAKEN_OVER)
{
plug_ctx->callback_index = i;
plugin_manager_log(DEBUG, "dispatch, run event_cb: %p, session: %s, event: (%d, %s)", runtime->event_cb, session_name, event_type, event_str_buffer);
runtime->event_cb(seesion, event_type, packet, payload, payload_len, &runtime->cb_args);
/*
* This plugin may be taken over when the session is open (SESSION_EVENT_OPENING),
* and the pme may be NULL when event_cb() is run to free memory with the session is closed (SESSION_EVENT_CLOSING).
* So, The plugin must check whether the pme is NULL before freeing memory.
*/
if (event_type & SESSION_EVENT_CLOSING)
{
plug_ctx->callback_index = i;
plugin_manager_log(DEBUG, "dispatch, run event_cb: %p, plugin status: 'taken over', session: %s, event: (%d, %s)", runtime->event_cb, session_name, event_type, event_str_buffer);
runtime->event_cb(seesion, SESSION_EVENT_CLOSING, packet, payload, payload_len, &runtime->cb_args);
continue;
}
else
{
plugin_manager_log(DEBUG, "dispatch, skip event_cb: %p, plugin status: 'taken over', session: %s, event: (%d, %s)", runtime->event_cb, session_name, event_type, event_str_buffer);
}
}
else if (runtime->status == PLUGIN_STATUS_NORMAL)
{
if (runtime->event & event_type)
{
plug_ctx->callback_index = i;
plugin_manager_log(DEBUG, "dispatch, run event_cb: %p, plugin status: 'normal', session: %s, event: (%d, %s)", runtime->event_cb, session_name, event_type, event_str_buffer);
runtime->event_cb(seesion, event_type, packet, payload, payload_len, &runtime->cb_args);
}
else
{
plugin_manager_log(DEBUG, "dispatch, skip event_cb: %p, plugin status: 'normal', session: %s, event: (%d, %s)", runtime->event_cb, session_name, event_type, event_str_buffer);
}
}
}
}
@@ -462,21 +484,29 @@ void plugin_manager_dispatch(struct plugin_manager *plug_mgr, struct stellar_eve
* Public API For Plugin
******************************************************************************/
/*
* pm_session_dettach_me just sets the flag to disable this plugin and no longer call this event callback.
* Before calling pm_session_dettach_me, the current plugin must release related resources for the current session.
*/
void pm_session_dettach_me(const struct stellar_session *session)
{
struct session_plugin_ctx *plugin_ctx = stellar_session_get_plugin_ctx(session);
assert(plugin_ctx);
struct callback_runtime *runtime_me = &plugin_ctx->callbacks[plugin_ctx->callback_index];
/*
* Just set the skip flag and don't call this event callback next.
* The plugin is closed before calling pm_session_dettach_me.
*/
runtime_me->skip = 1;
runtime_me->status = PLUGIN_STATUS_DETTACH_ME;
plugin_manager_log(DEBUG, "%p dettach me, disable event_cb: %p, session: %s", runtime_me->event_cb, runtime_me->event_cb, stellar_session_get_name(session));
}
void pm_session_dettach_others(const struct stellar_session *session)
/*
* The current plugin takes over the current session, the pm_session_take_over setting flag disables other plugins,
* and the current session does not call other plugins except for the SESSION_EVENT_CLOSING event.
*
* The current plugin may be taken over while the session is open (SESSION_EVENT_OPENING),
* other plugins event_cb is not called, the session pme on other plugins is NULL,
* When the session is closed (SESSION_EVENT_CLOSING), call other plugin even_cb to destroy pme must check if pme is NULL
*/
void pm_session_take_over(const struct stellar_session *session)
{
struct session_plugin_ctx *plugin_ctx = stellar_session_get_plugin_ctx(session);
assert(plugin_ctx);
@@ -487,9 +517,8 @@ void pm_session_dettach_others(const struct stellar_session *session)
if (i != plugin_ctx->callback_index)
{
struct callback_runtime *runtime_other = &plugin_ctx->callbacks[i];
runtime_other->skip = 1;
plugin_manager_log(DEBUG, "%p dettach others, run error_cb: %p, session: %s", runtime_me->event_cb, runtime_other->error_cb, stellar_session_get_name(session));
runtime_other->error_cb(session, ERROR_EVENT_DETTACH, &runtime_other->cb_args);
runtime_other->status = PLUGIN_STATUS_TAKEN_OVER;
plugin_manager_log(DEBUG, "%p take over, disable event_cb: %p, session: %s", runtime_me->event_cb, runtime_other->event_cb, stellar_session_get_name(session));
}
}
}

View File

@@ -16,7 +16,7 @@ void plugin_manager_destory(struct plugin_manager *plug_mgr);
int plugin_manager_load(struct plugin_manager *plug_mgr, const char *file);
void plugin_manager_unload(struct plugin_manager *plug_mgr);
int plugin_manager_register(struct plugin_manager *plug_mgr, const char *session_name, enum session_event_type event, fn_session_event_callback *event_cb, fn_session_error_callback *error_cb);
int plugin_manager_register(struct plugin_manager *plug_mgr, const char *session_name, enum session_event_type event, fn_session_event_callback *event_cb);
void plugin_manager_dispatch(struct plugin_manager *plug_mgr, struct stellar_event *event);
// only use for gtest

View File

@@ -62,11 +62,6 @@ static int toml_parse_plugin_section(toml_table_t *root, struct plugin_manager_c
return -1;
}
if (toml_parse_string(plugin_section, "ERROR_FUNC", file, &config->plugin_section.error_func_name) == -1)
{
return -1;
}
if (toml_parse_string(plugin_section, "LIBRARY_PATH", file, &config->plugin_section.lib_path) == -1)
{
return -1;
@@ -174,7 +169,6 @@ struct plugin_manager_config *plugin_mangager_config_create()
config->session_section = NULL;
config->plugin_section.init_func_name = NULL;
config->plugin_section.exit_func_name = NULL;
config->plugin_section.error_func_name = NULL;
config->plugin_section.lib_path = NULL;
return config;
@@ -188,7 +182,6 @@ void plugin_mangager_config_destory(struct plugin_manager_config *config)
safe_free(config->plugin_section.init_func_name);
safe_free(config->plugin_section.exit_func_name);
safe_free(config->plugin_section.error_func_name);
safe_free(config->plugin_section.lib_path);
if (config->session_section)
@@ -213,7 +206,6 @@ void plugin_mangager_config_dump(struct plugin_manager_config *config)
plugin_manager_log(DEBUG, "[CONFIG_FILE] : %s", config->file_path);
plugin_manager_log(DEBUG, "[PLUGINFO]->INIT_FUNC : %s", config->plugin_section.init_func_name);
plugin_manager_log(DEBUG, "[PLUGINFO]->EXIT_FUNC : %s", config->plugin_section.exit_func_name);
plugin_manager_log(DEBUG, "[PLUGINFO]->ERROR_FUNC : %s", config->plugin_section.error_func_name);
plugin_manager_log(DEBUG, "[PLUGINFO]->LIBRARY_PATH : %s", config->plugin_section.lib_path);
if (config->session_section)

View File

@@ -20,7 +20,6 @@ struct plugin_section_config
{
char *init_func_name;
char *exit_func_name;
char *error_func_name;
char *lib_path;
};

View File

@@ -20,7 +20,6 @@ struct plugin_manager_module
plugin_init_callback *init_cb_ptr;
plugin_exit_callback *exit_cb_ptr;
fn_session_error_callback *error_cb_ptr;
struct plugin_manager_module_evcb *evcbs;
int evcbs_num;
@@ -85,14 +84,6 @@ struct plugin_manager_module *plugin_manager_module_open(struct plugin_manager_c
goto err;
}
module->error_cb_ptr = (fn_session_error_callback *)(dlsym(module->dl_handle, config->plugin_section.error_func_name));
if (module->error_cb_ptr == NULL)
{
plugin_manager_log(ERROR, "can't find symbol name of '%s' in dynamic library %s, %s",
config->plugin_section.error_func_name, module->lib_path, dlerror());
goto err;
}
if (config->session_section)
{
module->evcbs = safe_alloc(struct plugin_manager_module_evcb, config->session_section_num);
@@ -170,7 +161,7 @@ int plugin_manager_module_register(struct plugin_manager *plug_mgr, struct plugi
{
struct plugin_manager_module_evcb *event_cb = &module->evcbs[i];
if (plugin_manager_register(plug_mgr, event_cb->session_name, event_cb->event, event_cb->event_cb_ptr, module->error_cb_ptr) == -1)
if (plugin_manager_register(plug_mgr, event_cb->session_name, event_cb->event, event_cb->event_cb_ptr) == -1)
{
plugin_manager_log(ERROR, "dynamic library '%s' failed to register the event callback function of session '%s'", module->lib_path, event_cb->session_name);
return -1;
@@ -188,7 +179,6 @@ void plugin_manager_module_dump(struct plugin_manager_module *module, struct plu
plugin_manager_log(DEBUG, "[LIBRARY] : %s, %p", config->plugin_section.lib_path, module->dl_handle);
plugin_manager_log(DEBUG, "[INIT_FUNC] : %s, %p", config->plugin_section.init_func_name, module->init_cb_ptr);
plugin_manager_log(DEBUG, "[EXIT_FUNC] : %s, %p", config->plugin_section.exit_func_name, module->exit_cb_ptr);
plugin_manager_log(DEBUG, "[ERROR_FUNC] : %s, %p", config->plugin_section.error_func_name, module->error_cb_ptr);
for (int i = 0; i < module->evcbs_num; i++)
{

View File

@@ -144,7 +144,6 @@ TEST(PLUGIN_MANAGER_TEST, plugin_mangager_config_HTTP)
EXPECT_STREQ(config->file_path, "./plugins_config/http_event_plugin/http_event_plugin.inf");
EXPECT_STREQ(config->plugin_section.init_func_name, "http_event_plugin_init");
EXPECT_STREQ(config->plugin_section.exit_func_name, "http_event_plugin_exit");
EXPECT_STREQ(config->plugin_section.error_func_name, "http_event_plugin_error");
EXPECT_STREQ(config->plugin_section.lib_path, "./test_plugins/plugins_library/http_event_plugin_test.so");
EXPECT_TRUE(config->session_section_num == 1);
@@ -170,7 +169,6 @@ TEST(PLUGIN_MANAGER_TEST, plugin_mangager_config_CUSTOM)
EXPECT_STREQ(config->file_path, "./plugins_config/custom_event_plugin/custom_event_plugin.inf");
EXPECT_STREQ(config->plugin_section.init_func_name, "custom_event_plugin_init");
EXPECT_STREQ(config->plugin_section.exit_func_name, "custom_event_plugin_exit");
EXPECT_STREQ(config->plugin_section.error_func_name, "custom_event_plugin_error");
EXPECT_STREQ(config->plugin_section.lib_path, "./test_plugins/plugins_library/custom_event_plugin_test.so");
EXPECT_TRUE(config->session_section_num == 3);
@@ -494,8 +492,8 @@ TEST(PLUGIN_MANAGER_TEST, plugin_manager_dispatch_HTTP_dettach_me)
#endif
#if 1
// http_event_plugin_entry + SESSION_EVENT_ORDPKT ==> pm_session_dettach_others
TEST(PLUGIN_MANAGER_TEST, plugin_manager_dispatch_HTTP_dettach_other)
// http_event_plugin_entry + SESSION_EVENT_ORDPKT ==> pm_session_take_over
TEST(PLUGIN_MANAGER_TEST, plugin_manager_dispatch_HTTP_take_over)
{
/*
* [SESSION_NAME.HTTP]
@@ -542,7 +540,7 @@ TEST(PLUGIN_MANAGER_TEST, plugin_manager_dispatch_HTTP_dettach_other)
EXPECT_TRUE(pme->flags == SESSION_EVENT_OPENING);
EXPECT_STREQ(pme->data, "custom_event_plugin_http_entry");
// http_event_plugin_entry + SESSION_EVENT_ORDPKT ==> pm_session_dettach_others
// http_event_plugin_entry + SESSION_EVENT_ORDPKT ==> pm_session_take_over
event_data.type = SESSION_EVENT_ORDPKT;
plugin_manager_dispatch(plug_mgr, &event);
pme = (struct http_session_pme *)pm_session_get_plugin_pme(&session);

View File

@@ -1,7 +1,6 @@
[PLUGINFO]
INIT_FUNC="custom_event_plugin_init"
EXIT_FUNC="custom_event_plugin_exit"
ERROR_FUNC="custom_event_plugin_error"
LIBRARY_PATH="./test_plugins/plugins_library/custom_event_plugin_test.so"
# Support SESSION_EVENT_TYPE: "SESSION_EVENT_OPENING", "SESSION_EVENT_RAWPKT", "SESSION_EVENT_ORDPKT", "SESSION_EVENT_META", "SESSION_EVENT_CLOSING", "SESSION_EVENT_ALL"

View File

@@ -1,7 +1,6 @@
[PLUGINFO]
INIT_FUNC="http_event_plugin_init"
EXIT_FUNC="http_event_plugin_exit"
ERROR_FUNC="http_event_plugin_error"
LIBRARY_PATH="./test_plugins/plugins_library/http_event_plugin_test.so"
# Support SESSION_EVENT_TYPE: "SESSION_EVENT_OPENING", "SESSION_EVENT_RAWPKT", "SESSION_EVENT_ORDPKT", "SESSION_EVENT_META", "SESSION_EVENT_CLOSING", "SESSION_EVENT_ALL"

View File

@@ -79,30 +79,6 @@ static void http_session_pme_destory(struct http_session_pme *pme)
}
}
extern "C" void custom_event_plugin_error(const struct stellar_session *session, enum error_event_type event, void **pme)
{
if (strcmp(stellar_session_get_name(session), "TCP") == 0)
{
struct tcp_session_pme **per_tcp_session_pme = (struct tcp_session_pme **)pme;
printf("RUN custom_event_plugin_error, session_name: 'TCP', error_event_type: %d, pme->data: %s\n", event, (*per_tcp_session_pme) == NULL ? "NULL" : (*per_tcp_session_pme)->data);
tcp_session_pme_destory(*per_tcp_session_pme);
}
if (strcmp(stellar_session_get_name(session), "CUSTOM") == 0)
{
struct custom_session_pme **per_custom_session_pme = (struct custom_session_pme **)pme;
printf("RUN custom_event_plugin_error, session_name: 'CUSTOM', error_event_type: %d, pme->data: %s\n", event, (*per_custom_session_pme) == NULL ? "NULL" : (*per_custom_session_pme)->data);
custom_session_pme_destory(*per_custom_session_pme);
}
if (strcmp(stellar_session_get_name(session), "HTTP") == 0)
{
struct http_session_pme **per_http_session_pme = (struct http_session_pme **)pme;
printf("RUN custom_event_plugin_error, session_name: 'HTTP', error_event_type: %d, pme->data: %s\n", event, (*per_http_session_pme) == NULL ? "NULL" : (*per_http_session_pme)->data);
http_session_pme_destory(*per_http_session_pme);
}
}
extern "C" void custom_event_plugin_tcp_entry(const struct stellar_session *session, enum session_event_type event, struct stellar_packet *p, const char *payload, uint16_t len, void **pme)
{
struct tcp_session_pme **per_tcp_session_pme = (struct tcp_session_pme **)pme;

View File

@@ -30,16 +30,6 @@ static void http_session_pme_destory(struct http_session_pme *pme)
}
}
extern "C" void http_event_plugin_error(const struct stellar_session *session, enum error_event_type event, void **pme)
{
if (strcmp(stellar_session_get_name(session), "HTTP") == 0)
{
struct http_session_pme **per_http_session_pme = (struct http_session_pme **)pme;
printf("RUN http_event_plugin_error, session_name: 'HTTP', error_event_type: %d, pme->data: %s\n", event, (*per_http_session_pme) == NULL ? "NULL" : (*per_http_session_pme)->data);
http_session_pme_destory(*per_http_session_pme);
}
}
extern "C" void http_event_plugin_entry(const struct stellar_session *session, enum session_event_type event, struct stellar_packet *p, const char *payload, uint16_t len, void **pme)
{
struct http_session_pme **per_http_session_pme = (struct http_session_pme **)pme;
@@ -72,7 +62,7 @@ extern "C" void http_event_plugin_entry(const struct stellar_session *session, e
{
// TODO
(*per_http_session_pme)->flags = SESSION_EVENT_ORDPKT;
pm_session_dettach_others(session);
pm_session_take_over(session);
}
if (event & SESSION_EVENT_META)

View File

@@ -9,8 +9,4 @@ void http_decoder(const struct stellar_session *s, enum session_event_type event
session_manager_trigger_event(new_session, SESSION_EVENT_OPENING, info);
session_manager_trigger_event(new_session, SESSION_EVENT_META, info);
}
void http_error_cb(const struct stellar_session *s, enum error_event_type event, void **pme)
{
}