diff options
| author | niubinghui <[email protected]> | 2024-10-15 19:15:05 +0800 |
|---|---|---|
| committer | niubinghui <[email protected]> | 2024-10-15 19:15:05 +0800 |
| commit | 7c8146f00f0c57340d8f5aa38619f8292cf44ba2 (patch) | |
| tree | 53a81b53c45ce5e9747583134c4469cc673fa39d /src/lua_binding_function.c | |
| parent | be165549d1dfe25a0c3badadf449aa48e4a349e6 (diff) | |
【修改】重新组织部分数据结构,所有逻辑均改为面向数据结构的编程思路
Diffstat (limited to 'src/lua_binding_function.c')
| -rw-r--r-- | src/lua_binding_function.c | 154 |
1 files changed, 55 insertions, 99 deletions
diff --git a/src/lua_binding_function.c b/src/lua_binding_function.c index f9ef35c..28f4358 100644 --- a/src/lua_binding_function.c +++ b/src/lua_binding_function.c @@ -1,3 +1,4 @@ +#include "lua_module_manage_internal.h" #include "lua_binding_function.h" #include "lua_binding_cfunc.h" @@ -19,7 +20,7 @@ #define LUA_BINDING_FUNCTION_GET_VALUE_POINTER(func_name, param_type, value_type, value_func) \ int func_name(struct lua_state *state) \ { \ - lua_State *L = (lua_State *)state; \ + lua_State *L = (lua_State *)lua_state_get_lua_State(state); \ if (lua_gettop(L) != 1) \ { \ lua_settop(L, 0); \ @@ -35,7 +36,7 @@ #define LUA_BINDING_FUNCTION_GET_VALUE_INT(func_name, param_type, value_func) \ int func_name(struct lua_state *state) \ { \ - lua_State *L = (lua_State *)state; \ + lua_State *L = (lua_State *)lua_state_get_lua_State(state); \ if (lua_gettop(L) != 1) \ { \ lua_settop(L, 0); \ @@ -50,7 +51,7 @@ int lua_mq_schema_get_topic_id(struct lua_state *state) { - lua_State *L = (lua_State *)state; + lua_State *L = (lua_State *)lua_state_get_lua_State(state); if (lua_gettop(L) != 2 || lua_type(L, -1) != LUA_TSTRING || lua_type(L, -2) != LUA_TLIGHTUSERDATA) { lua_settop(L, 0); @@ -72,7 +73,7 @@ int lua_mq_schema_get_topic_id(struct lua_state *state) int lua_mq_schema_create_topic(struct lua_state *state) { - lua_State *L = (lua_State *)state; + lua_State *L = (lua_State *)lua_state_get_lua_State(state); if (lua_gettop(L) != 6 || lua_type(L, -5) != LUA_TSTRING || lua_type(L, -6) != LUA_TLIGHTUSERDATA) { lua_settop(L, 0); @@ -96,27 +97,19 @@ int lua_mq_schema_create_topic(struct lua_state *state) struct mq_schema *s = (struct mq_schema *)lua_topointer(L, -1); lua_settop(L, 0); - struct lua_fn_arg_pair *new_mq_dispatch_arg = CALLOC(struct lua_fn_arg_pair, 1); - memset(new_mq_dispatch_arg, 0, sizeof(struct lua_fn_arg_pair)); - new_mq_dispatch_arg->lua_fn_ref_id = on_dispatch_cb_fn_ref_id; - new_mq_dispatch_arg->lua_arg_ref_id = on_dispatch_arg_ref_id; - struct lua_fn_arg_pair *new_mq_msg_free_arg = CALLOC(struct lua_fn_arg_pair, 1); - memset(new_mq_msg_free_arg, 0, sizeof(struct lua_fn_arg_pair)); - new_mq_msg_free_arg->lua_fn_ref_id = free_cb_fn_ref_id; - new_mq_msg_free_arg->lua_arg_ref_id = free_arg_ref_id; + struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); + struct lua_fn_arg_pair *new_mq_dispatch_arg = lua_fn_arg_pair_new(lua_mod_mgr, on_dispatch_cb_fn_ref_id, on_dispatch_arg_ref_id); + struct lua_fn_arg_pair *new_mq_msg_free_arg = lua_fn_arg_pair_new(lua_mod_mgr, free_cb_fn_ref_id, free_arg_ref_id); int topic_id = mq_schema_create_topic(s, (const char *)topic_name, - lua_manager_mq_on_msg_dispatch_cb_func, + lua_cfunc_mq_on_msg_dispatch_cb_func, new_mq_dispatch_arg, - lua_manager_mq_msg_free_cb_func, + lua_cfunc_mq_msg_free_cb_func, new_mq_msg_free_arg); if (topic_id >= 0) { - struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); - new_mq_dispatch_arg->lua_mod_mgr = lua_mod_mgr; - new_mq_msg_free_arg->lua_mod_mgr = lua_mod_mgr; - LL_APPEND(lua_mod_mgr->mq_dispatch_list, new_mq_dispatch_arg); - LL_APPEND(lua_mod_mgr->mq_msg_free_list, new_mq_msg_free_arg); + lua_fn_arg_pair_insert(new_mq_dispatch_arg); + lua_fn_arg_pair_insert(new_mq_msg_free_arg); } else { @@ -128,10 +121,8 @@ int lua_mq_schema_create_topic(struct lua_state *state) luaL_unref(L, LUA_REGISTRYINDEX, on_dispatch_arg_ref_id); if (on_dispatch_cb_fn_ref_id + 1) luaL_unref(L, LUA_REGISTRYINDEX, on_dispatch_cb_fn_ref_id); - if (new_mq_dispatch_arg) - FREE(new_mq_dispatch_arg); - if (new_mq_msg_free_arg) - FREE(new_mq_msg_free_arg); + lua_fn_arg_pair_free(new_mq_dispatch_arg); + lua_fn_arg_pair_free(new_mq_msg_free_arg); } lua_pushinteger(L, topic_id); @@ -164,19 +155,14 @@ int lua_mq_schema_update_topic(struct lua_state *state) struct mq_schema *s = (struct mq_schema *)lua_topointer(L, -1); lua_settop(L, 0); - struct lua_fn_arg_pair *new_mq_dispatch_arg = CALLOC(struct lua_fn_arg_pair, 1); - memset(new_mq_dispatch_arg, 0, sizeof(struct lua_fn_arg_pair)); - new_mq_dispatch_arg->lua_fn_ref_id = on_dispatch_cb_fn_ref_id; - new_mq_dispatch_arg->lua_arg_ref_id = on_dispatch_arg_ref_id; - struct lua_fn_arg_pair *new_mq_msg_free_arg = CALLOC(struct lua_fn_arg_pair, 1); - memset(new_mq_msg_free_arg, 0, sizeof(struct lua_fn_arg_pair)); - new_mq_msg_free_arg->lua_fn_ref_id = free_cb_fn_ref_id; - new_mq_msg_free_arg->lua_arg_ref_id = free_arg_ref_id; + struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); + struct lua_fn_arg_pair *new_mq_dispatch_arg = lua_fn_arg_pair_new(lua_mod_mgr, on_dispatch_cb_fn_ref_id, on_dispatch_arg_ref_id); + struct lua_fn_arg_pair *new_mq_msg_free_arg = lua_fn_arg_pair_new(lua_mod_mgr, free_cb_fn_ref_id, free_arg_ref_id); int update_ret = mq_schema_update_topic(s, topic_id, - lua_manager_mq_on_msg_dispatch_cb_func, + lua_cfunc_mq_on_msg_dispatch_cb_func, new_mq_dispatch_arg, - lua_manager_mq_msg_free_cb_func, + lua_cfunc_mq_msg_free_cb_func, new_mq_msg_free_arg); if (topic_id) { @@ -188,18 +174,13 @@ int lua_mq_schema_update_topic(struct lua_state *state) luaL_unref(L, LUA_REGISTRYINDEX, on_dispatch_arg_ref_id); if (on_dispatch_cb_fn_ref_id + 1) luaL_unref(L, LUA_REGISTRYINDEX, on_dispatch_cb_fn_ref_id); - if (new_mq_dispatch_arg) - FREE(new_mq_dispatch_arg); - if (new_mq_msg_free_arg) - FREE(new_mq_msg_free_arg); + lua_fn_arg_pair_free(new_mq_dispatch_arg); + lua_fn_arg_pair_free(new_mq_msg_free_arg); } else { - struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); - new_mq_dispatch_arg->lua_mod_mgr = lua_mod_mgr; - new_mq_msg_free_arg->lua_mod_mgr = lua_mod_mgr; - LL_APPEND(lua_mod_mgr->mq_dispatch_list, new_mq_dispatch_arg); - LL_APPEND(lua_mod_mgr->mq_msg_free_list, new_mq_msg_free_arg); + lua_fn_arg_pair_insert(new_mq_dispatch_arg); + lua_fn_arg_pair_insert(new_mq_msg_free_arg); } lua_pushinteger(L, update_ret); @@ -242,25 +223,20 @@ int lua_mq_schema_subscribe(struct lua_state *state) struct mq_schema *s = (struct mq_schema *)lua_topointer(L, -1); lua_settop(L, 0); - struct lua_fn_arg_pair *new_mq_on_msg_arg = CALLOC(struct lua_fn_arg_pair, 1); - memset(new_mq_on_msg_arg, 0, sizeof(struct lua_fn_arg_pair)); - new_mq_on_msg_arg->lua_arg_ref_id = on_msg_arg_ref_id; - new_mq_on_msg_arg->lua_fn_ref_id = on_msg_fn_ref_id; - int subscribe_ret = mq_schema_subscribe(s, topic_id, lua_manager_mq_on_msg_cb_func, new_mq_on_msg_arg); + struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); + struct lua_fn_arg_pair *new_mq_on_msg_arg = lua_fn_arg_pair_new(lua_mod_mgr, on_msg_fn_ref_id, on_msg_arg_ref_id); + int subscribe_ret = mq_schema_subscribe(s, topic_id, lua_cfunc_mq_on_msg_cb_func, new_mq_on_msg_arg); if (subscribe_ret) { if (on_msg_arg_ref_id + 1) luaL_unref(L, LUA_REGISTRYINDEX, on_msg_arg_ref_id); if (on_msg_fn_ref_id + 1) luaL_unref(L, LUA_REGISTRYINDEX, on_msg_fn_ref_id); - if (new_mq_on_msg_arg) - FREE(new_mq_on_msg_arg); + lua_fn_arg_pair_free(new_mq_on_msg_arg); } else { - struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); - new_mq_on_msg_arg->lua_mod_mgr = lua_mod_mgr; - LL_APPEND(lua_mod_mgr->mq_on_msg_list, new_mq_on_msg_arg); + lua_fn_arg_pair_insert(new_mq_on_msg_arg); } lua_pushinteger(L, subscribe_ret); @@ -293,25 +269,30 @@ int lua_mq_runtime_publish_message(struct lua_state *state) return 1; } -LUA_BINDING_FUNCTION_GET_VALUE_INT(lua_module_manager_get_thread_id, +LUA_BINDING_FUNCTION_GET_VALUE_POINTER(lua_stellar_get_stellar_module_manager, + struct lua_module_manager, + struct stellar_module_manager, + lua_module_manager_get_stellar_module_manager) + +LUA_BINDING_FUNCTION_GET_VALUE_INT(lua_stellar_get_thread_id, struct stellar_module_manager, stellar_module_manager_get_thread_id) -LUA_BINDING_FUNCTION_GET_VALUE_INT(lua_module_manager_get_max_thread_num, +LUA_BINDING_FUNCTION_GET_VALUE_INT(lua_stellar_get_max_thread_num, struct stellar_module_manager, stellar_module_manager_get_max_thread_num) -LUA_BINDING_FUNCTION_GET_VALUE_POINTER(lua_module_manager_get_mq_runtime, +LUA_BINDING_FUNCTION_GET_VALUE_POINTER(lua_stellar_get_mq_runtime, struct stellar_module_manager, struct mq_runtime, stellar_module_manager_get_mq_runtime) -LUA_BINDING_FUNCTION_GET_VALUE_POINTER(lua_module_manager_get_mq_schema, +LUA_BINDING_FUNCTION_GET_VALUE_POINTER(lua_stellar_get_mq_schema, struct stellar_module_manager, struct mq_schema, stellar_module_manager_get_mq_schema) -LUA_BINDING_FUNCTION_GET_VALUE_POINTER(lua_module_manager_get_logger, +LUA_BINDING_FUNCTION_GET_VALUE_POINTER(lua_stellar_get_logger, struct stellar_module_manager, struct logger, stellar_module_manager_get_logger) @@ -345,24 +326,20 @@ int lua_packet_manager_subscribe(struct lua_state *state) struct packet_manager *pkt_mgr = (struct packet_manager *)lua_topointer(L, -1); lua_settop(L, 0); - struct lua_fn_arg_pair *new_on_packet_arg = CALLOC(struct lua_fn_arg_pair, 1); - new_on_packet_arg->lua_arg_ref_id = on_packet_stage_arg_ref_id; - new_on_packet_arg->lua_fn_ref_id = on_packet_stage_fn_ref_id; - int subscribe_ret = packet_manager_subscribe(pkt_mgr, (enum packet_stage)stage, lua_manager_packet_on_stage_callback, new_on_packet_arg); + struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); + struct lua_fn_arg_pair *new_on_packet_arg = lua_fn_arg_pair_new(lua_mod_mgr, on_packet_stage_fn_ref_id, on_packet_stage_arg_ref_id); + int subscribe_ret = packet_manager_subscribe(pkt_mgr, (enum packet_stage)stage, lua_cfunc_packet_on_stage_callback, new_on_packet_arg); if (subscribe_ret) { if (on_packet_stage_arg_ref_id + 1) luaL_unref(L, LUA_REGISTRYINDEX, on_packet_stage_arg_ref_id); if (on_packet_stage_fn_ref_id + 1) luaL_unref(L, LUA_REGISTRYINDEX, on_packet_stage_fn_ref_id); - if (new_on_packet_arg) - FREE(new_on_packet_arg); + lua_fn_arg_pair_free(new_on_packet_arg); } else { - struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); - new_on_packet_arg->lua_mod_mgr = lua_mod_mgr; - LL_APPEND(lua_mod_mgr->on_packet_stage_list, new_on_packet_arg); + lua_fn_arg_pair_insert(new_on_packet_arg); } lua_pushinteger(L, subscribe_ret); @@ -397,20 +374,19 @@ static int lua_session_manager_subscribe(struct lua_state *state, enum sess_mgr_ struct session_manager *sess_mgr = (struct session_manager *)lua_topointer(L, -1); lua_settop(L, 0); - struct lua_fn_arg_pair *new_on_sess_arg = CALLOC(struct lua_fn_arg_pair, 1); - new_on_sess_arg->lua_arg_ref_id = on_session_arg_ref_id; - new_on_sess_arg->lua_fn_ref_id = on_session_fn_ref_id; + struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); + struct lua_fn_arg_pair *new_on_sess_arg = lua_fn_arg_pair_new(lua_mod_mgr, on_session_fn_ref_id, on_session_arg_ref_id); int subscribe_ret = -1; switch (type) { case sub_type_tcp: - subscribe_ret = session_manager_subscribe_tcp(sess_mgr, lua_manager_session_callback, new_on_sess_arg); + subscribe_ret = session_manager_subscribe_tcp(sess_mgr, lua_cfunc_session_callback, new_on_sess_arg); break; case sub_type_udp: - subscribe_ret = session_manager_subscribe_udp(sess_mgr, lua_manager_session_callback, new_on_sess_arg); + subscribe_ret = session_manager_subscribe_udp(sess_mgr, lua_cfunc_session_callback, new_on_sess_arg); break; case sub_type_control_pkt: - subscribe_ret = session_manager_subscribe_control_packet(sess_mgr, lua_manager_session_callback, new_on_sess_arg); + subscribe_ret = session_manager_subscribe_control_packet(sess_mgr, lua_cfunc_session_callback, new_on_sess_arg); break; default: break; @@ -421,27 +397,11 @@ static int lua_session_manager_subscribe(struct lua_state *state, enum sess_mgr_ luaL_unref(L, LUA_REGISTRYINDEX, on_session_arg_ref_id); if (on_session_fn_ref_id + 1) luaL_unref(L, LUA_REGISTRYINDEX, on_session_fn_ref_id); - if (new_on_sess_arg) - FREE(new_on_sess_arg); + lua_fn_arg_pair_free(new_on_sess_arg); } else { - struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); - new_on_sess_arg->lua_mod_mgr = lua_mod_mgr; - switch (type) - { - case sub_type_tcp: - LL_APPEND(lua_mod_mgr->on_session_tcp_list, new_on_sess_arg); - break; - case sub_type_udp: - LL_APPEND(lua_mod_mgr->on_session_udp_list, new_on_sess_arg); - break; - case sub_type_control_pkt: - LL_APPEND(lua_mod_mgr->on_session_control_packet_list, new_on_sess_arg); - break; - default: - break; - } + lua_fn_arg_pair_insert(new_on_sess_arg); } lua_pushinteger(L, subscribe_ret); @@ -477,24 +437,20 @@ int lua_session_manager_subscribe_tcp_stream(struct lua_state *state) struct session_manager *sess_mgr = (struct session_manager *)lua_topointer(L, -1); lua_settop(L, 0); - struct lua_fn_arg_pair *new_on_tcp_stream_arg = CALLOC(struct lua_fn_arg_pair, 1); - new_on_tcp_stream_arg->lua_arg_ref_id = on_tcp_stream_arg_ref_id; - new_on_tcp_stream_arg->lua_fn_ref_id = on_tcp_stream_fn_ref_id; - int subscribe_ret = session_manager_subscribe_tcp_stream(sess_mgr, lua_manager_tcp_stream_callback, new_on_tcp_stream_arg); + struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); + struct lua_fn_arg_pair *new_on_tcp_stream_arg = lua_fn_arg_pair_new(lua_mod_mgr, on_tcp_stream_fn_ref_id, on_tcp_stream_arg_ref_id); + int subscribe_ret = session_manager_subscribe_tcp_stream(sess_mgr, lua_cfunc_tcp_stream_callback, new_on_tcp_stream_arg); if (subscribe_ret) { if (on_tcp_stream_arg_ref_id + 1) luaL_unref(L, LUA_REGISTRYINDEX, on_tcp_stream_arg_ref_id); if (on_tcp_stream_fn_ref_id + 1) luaL_unref(L, LUA_REGISTRYINDEX, on_tcp_stream_fn_ref_id); - if (new_on_tcp_stream_arg) - FREE(new_on_tcp_stream_arg); + lua_fn_arg_pair_free(new_on_tcp_stream_arg); } else { - struct lua_module_manager *lua_mod_mgr = lua_state_get_lua_module_manager(state); - new_on_tcp_stream_arg->lua_mod_mgr = lua_mod_mgr; - LL_APPEND(lua_mod_mgr->on_tcp_stream_list, new_on_tcp_stream_arg); + lua_fn_arg_pair_insert(new_on_tcp_stream_arg); } lua_pushinteger(L, subscribe_ret); |
