summaryrefslogtreecommitdiff
path: root/src/lua_binding_function.c
diff options
context:
space:
mode:
authorniubinghui <[email protected]>2024-10-15 19:15:05 +0800
committerniubinghui <[email protected]>2024-10-15 19:15:05 +0800
commit7c8146f00f0c57340d8f5aa38619f8292cf44ba2 (patch)
tree53a81b53c45ce5e9747583134c4469cc673fa39d /src/lua_binding_function.c
parentbe165549d1dfe25a0c3badadf449aa48e4a349e6 (diff)
【修改】重新组织部分数据结构,所有逻辑均改为面向数据结构的编程思路
Diffstat (limited to 'src/lua_binding_function.c')
-rw-r--r--src/lua_binding_function.c154
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);