From fce204c8b66bb1084f940f96f4cc5ea505d67a6e Mon Sep 17 00:00:00 2001 From: niubinghui Date: Fri, 16 Aug 2024 11:50:23 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E3=80=91=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E9=83=A8=E5=88=86=E5=A4=B4=E6=96=87=E4=BB=B6=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=EF=BC=8C=E6=9B=BF=E6=8D=A2=E9=83=A8=E5=88=86=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/lua_plugin_manage.h | 2 +- src/lua_binding_functions.c | 58 ++++++++++++++++++++----------------- src/lua_binding_functions.h | 4 ++- src/lua_plugin_binding.c | 6 ++-- src/lua_plugin_cfunc.c | 16 +++++----- 5 files changed, 47 insertions(+), 39 deletions(-) diff --git a/include/lua_plugin_manage.h b/include/lua_plugin_manage.h index d7fc073..0bbf19c 100644 --- a/include/lua_plugin_manage.h +++ b/include/lua_plugin_manage.h @@ -20,7 +20,7 @@ ************************************************************************/ #pragma once -#include "stellar.h" +#include "stellar/stellar.h" struct lua_config_specific { diff --git a/src/lua_binding_functions.c b/src/lua_binding_functions.c index 3d8f3ee..d2c62b1 100644 --- a/src/lua_binding_functions.c +++ b/src/lua_binding_functions.c @@ -30,7 +30,9 @@ * int lua_mq_unignore_message ************************************************************************/ #include "lua_plugin_manage_internal.h" -#include "session_mq.h" + +#include "stellar/session.h" +#include "stellar/session_mq.h" /* ***** ***** ***** ***** ***** ***** */ int lua_plugin_manage_regist(lua_State *state) @@ -138,6 +140,7 @@ int lua_plugin_manage_regist(lua_State *state) } /* ***** ***** ***** ***** ***** ***** */ +#if 0 int lua_session_get_id(lua_State *state) { /* 参数个数检查 */ @@ -191,6 +194,32 @@ int lua_session_set_id(lua_State *state) return 0; } +int lua_session_set_type(lua_State *state) +{ + /* 参数个数检查 */ + if (lua_gettop(state) != 2) + { + lua_settop(state, 0); + return 0; + } + + /* 参数类型检查 */ + if (lua_type(state, -1) != LUA_TNUMBER || lua_type(state, -2) != LUA_TLIGHTUSERDATA) + { + lua_settop(state, 0); + return 0; + } + + int settype = lua_tointeger(state, -1); + lua_pop(state, 1); + struct session *sess = (struct session *)lua_topointer(state, -1); + lua_pop(state, 1); + + session_set_type(sess, settype); + return 0; +} +#endif + int lua_session_get_type(lua_State *state) { /* 参数个数检查 */ @@ -215,35 +244,10 @@ int lua_session_get_type(lua_State *state) } lua_pop(state, 1); - lua_pushinteger(state, session_get_type(sess)); + lua_pushinteger(state, (int)session_get_type(sess)); return 1; } -int lua_session_set_type(lua_State *state) -{ - /* 参数个数检查 */ - if (lua_gettop(state) != 2) - { - lua_settop(state, 0); - return 0; - } - - /* 参数类型检查 */ - if (lua_type(state, -1) != LUA_TNUMBER || lua_type(state, -2) != LUA_TLIGHTUSERDATA) - { - lua_settop(state, 0); - return 0; - } - - int settype = lua_tointeger(state, -1); - lua_pop(state, 1); - struct session *sess = (struct session *)lua_topointer(state, -1); - lua_pop(state, 1); - - session_set_id(sess, settype); - return 0; -} - /* ***** ***** ***** ***** ***** ***** */ /* * TODO: 未完整考虑线程安全问题, 例如 diff --git a/src/lua_binding_functions.h b/src/lua_binding_functions.h index f051e2e..b80c074 100644 --- a/src/lua_binding_functions.h +++ b/src/lua_binding_functions.h @@ -35,10 +35,12 @@ int lua_plugin_manage_regist(lua_State *state); /* 与struct session结构相关的函数 */ +#if 0 int lua_session_get_id(lua_State *state); int lua_session_set_id(lua_State *state); -int lua_session_get_type(lua_State *state); int lua_session_set_type(lua_State *state); +#endif +int lua_session_get_type(lua_State *state); /* 与stellar message mq相关的函数 */ int lua_mq_create_topic(lua_State * state); diff --git a/src/lua_plugin_binding.c b/src/lua_plugin_binding.c index a252a64..083da96 100644 --- a/src/lua_plugin_binding.c +++ b/src/lua_plugin_binding.c @@ -35,10 +35,10 @@ /* 需要注册至状态机中的函数定义在链表中, 会依次完成注册 */ struct lua_binding_function lua_bind_functions[] = { {lua_plugin_manage_regist, "register", "plugin_manage"}, - {lua_session_get_id, "getid", "session"}, - {lua_session_set_id, "setid", "session"}, + // {lua_session_get_id, "getid", "session"}, + // {lua_session_set_id, "setid", "session"}, {lua_session_get_type, "gettype", "session"}, - {lua_session_set_type, "settype", "session"}, + // {lua_session_set_type, "settype", "session"}, {lua_mq_create_topic, "createtopic", "message"}, {lua_mq_get_topic_id, "gettopicid", "message"}, {lua_mq_update_topic, "updatetopic", "message"}, diff --git a/src/lua_plugin_cfunc.c b/src/lua_plugin_cfunc.c index 9fbb646..03d0b20 100644 --- a/src/lua_plugin_cfunc.c +++ b/src/lua_plugin_cfunc.c @@ -23,6 +23,8 @@ ************************************************************************/ #include "lua_plugin_manage_internal.h" +#include "stellar/session.h" + /* * Function: lpm_ctx_new_func * Input: | struct session * | sess | 会话信息 @@ -41,7 +43,7 @@ void *lpm_ctx_new_func( struct lua_model *env = (struct lua_model *)plugin_env; /* 获取插件ID并找到该插件 */ - int plugin_id = session_get_pluginid(sess); + int plugin_id = session_get_current_plugin_id(sess); // int plugin_id = 1; struct lua_plugin *plugin = NULL; while ((plugin = utarray_next(env->plugin_array, plugin))) @@ -55,7 +57,7 @@ void *lpm_ctx_new_func( return NULL; /* 获取当前的线程id并找到该线程对应的state */ - int thread_id = session_get_threadid(sess); + int thread_id = session_get_current_thread_id(sess); if (thread_id > global_schema->state_count) return NULL; lua_State *state = global_schema->thread_state[thread_id]; @@ -101,7 +103,7 @@ void lpm_ctx_free_func( struct lua_model *env = (struct lua_model *)plugin_env; /* 获取插件ID并找到该插件 */ - int plugin_id = session_get_pluginid(sess); + int plugin_id = session_get_current_plugin_id(sess); // int plugin_id = 1; struct lua_plugin *plugin = NULL; while ((plugin = utarray_next(env->plugin_array, plugin))) @@ -113,7 +115,7 @@ void lpm_ctx_free_func( /* 未找到该插件 */ return; - int thread_id = session_get_threadid(sess); + int thread_id = session_get_current_thread_id(sess); if (thread_id > global_schema->state_count) return; lua_State *state = global_schema->thread_state[thread_id]; @@ -150,7 +152,7 @@ void lpm_message_free_func( return; struct lua_message_mq *plugin_mq = (struct lua_message_mq *)msg_free_arg; - int thread_id = session_get_threadid(sess); + int thread_id = session_get_current_thread_id(sess); if (thread_id > global_schema->state_count) return; lua_State *state = global_schema->thread_state[thread_id]; @@ -194,7 +196,7 @@ void lpm_on_session_msg_func( struct lua_model *env = (struct lua_model *)plugin_env; /* 获取插件ID并找到该插件 */ - int plugin_id = session_get_pluginid(sess); + int plugin_id = session_get_current_plugin_id(sess); // int plugin_id = 1; struct lua_plugin *plugin = NULL; while ((plugin = utarray_next(env->plugin_array, plugin))) @@ -218,7 +220,7 @@ void lpm_on_session_msg_func( /* 判断该消息是由C端插件产生的还是由Lua插件产生的 */ struct lua_message_mq *message_mq = search_message_mq_by_id(topic_id); - int thread_id = session_get_threadid(sess); + int thread_id = session_get_current_thread_id(sess); if (thread_id > global_schema->state_count) return; lua_State *state = global_schema->thread_state[thread_id];