【修改】调整部分头文件路径,替换部分测试函数

This commit is contained in:
niubinghui
2024-08-16 11:50:23 +08:00
parent 3b2baf2806
commit fce204c8b6
5 changed files with 47 additions and 39 deletions

View File

@@ -20,7 +20,7 @@
************************************************************************/ ************************************************************************/
#pragma once #pragma once
#include "stellar.h" #include "stellar/stellar.h"
struct lua_config_specific struct lua_config_specific
{ {

View File

@@ -30,7 +30,9 @@
* int lua_mq_unignore_message * int lua_mq_unignore_message
************************************************************************/ ************************************************************************/
#include "lua_plugin_manage_internal.h" #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) 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) int lua_session_get_id(lua_State *state)
{ {
/* 参数个数检查 */ /* 参数个数检查 */
@@ -191,6 +194,32 @@ int lua_session_set_id(lua_State *state)
return 0; 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) 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_pop(state, 1);
lua_pushinteger(state, session_get_type(sess)); lua_pushinteger(state, (int)session_get_type(sess));
return 1; 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: 未完整考虑线程安全问题, 例如 * TODO: 未完整考虑线程安全问题, 例如

View File

@@ -35,10 +35,12 @@
int lua_plugin_manage_regist(lua_State *state); int lua_plugin_manage_regist(lua_State *state);
/* 与struct session结构相关的函数 */ /* 与struct session结构相关的函数 */
#if 0
int lua_session_get_id(lua_State *state); int lua_session_get_id(lua_State *state);
int lua_session_set_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); int lua_session_set_type(lua_State *state);
#endif
int lua_session_get_type(lua_State *state);
/* 与stellar message mq相关的函数 */ /* 与stellar message mq相关的函数 */
int lua_mq_create_topic(lua_State * state); int lua_mq_create_topic(lua_State * state);

View File

@@ -35,10 +35,10 @@
/* 需要注册至状态机中的函数定义在链表中, 会依次完成注册 */ /* 需要注册至状态机中的函数定义在链表中, 会依次完成注册 */
struct lua_binding_function lua_bind_functions[] = { struct lua_binding_function lua_bind_functions[] = {
{lua_plugin_manage_regist, "register", "plugin_manage"}, {lua_plugin_manage_regist, "register", "plugin_manage"},
{lua_session_get_id, "getid", "session"}, // {lua_session_get_id, "getid", "session"},
{lua_session_set_id, "setid", "session"}, // {lua_session_set_id, "setid", "session"},
{lua_session_get_type, "gettype", "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_create_topic, "createtopic", "message"},
{lua_mq_get_topic_id, "gettopicid", "message"}, {lua_mq_get_topic_id, "gettopicid", "message"},
{lua_mq_update_topic, "updatetopic", "message"}, {lua_mq_update_topic, "updatetopic", "message"},

View File

@@ -23,6 +23,8 @@
************************************************************************/ ************************************************************************/
#include "lua_plugin_manage_internal.h" #include "lua_plugin_manage_internal.h"
#include "stellar/session.h"
/* /*
* Function: lpm_ctx_new_func * Function: lpm_ctx_new_func
* Input: | struct session * | sess | 会话信息 * Input: | struct session * | sess | 会话信息
@@ -41,7 +43,7 @@ void *lpm_ctx_new_func(
struct lua_model *env = (struct lua_model *)plugin_env; struct lua_model *env = (struct lua_model *)plugin_env;
/* 获取插件ID并找到该插件 */ /* 获取插件ID并找到该插件 */
int plugin_id = session_get_pluginid(sess); int plugin_id = session_get_current_plugin_id(sess);
// int plugin_id = 1; // int plugin_id = 1;
struct lua_plugin *plugin = NULL; struct lua_plugin *plugin = NULL;
while ((plugin = utarray_next(env->plugin_array, plugin))) while ((plugin = utarray_next(env->plugin_array, plugin)))
@@ -55,7 +57,7 @@ void *lpm_ctx_new_func(
return NULL; return NULL;
/* 获取当前的线程id并找到该线程对应的state */ /* 获取当前的线程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) if (thread_id > global_schema->state_count)
return NULL; return NULL;
lua_State *state = global_schema->thread_state[thread_id]; 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; struct lua_model *env = (struct lua_model *)plugin_env;
/* 获取插件ID并找到该插件 */ /* 获取插件ID并找到该插件 */
int plugin_id = session_get_pluginid(sess); int plugin_id = session_get_current_plugin_id(sess);
// int plugin_id = 1; // int plugin_id = 1;
struct lua_plugin *plugin = NULL; struct lua_plugin *plugin = NULL;
while ((plugin = utarray_next(env->plugin_array, plugin))) while ((plugin = utarray_next(env->plugin_array, plugin)))
@@ -113,7 +115,7 @@ void lpm_ctx_free_func(
/* 未找到该插件 */ /* 未找到该插件 */
return; return;
int thread_id = session_get_threadid(sess); int thread_id = session_get_current_thread_id(sess);
if (thread_id > global_schema->state_count) if (thread_id > global_schema->state_count)
return; return;
lua_State *state = global_schema->thread_state[thread_id]; lua_State *state = global_schema->thread_state[thread_id];
@@ -150,7 +152,7 @@ void lpm_message_free_func(
return; return;
struct lua_message_mq *plugin_mq = (struct lua_message_mq *)msg_free_arg; 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) if (thread_id > global_schema->state_count)
return; return;
lua_State *state = global_schema->thread_state[thread_id]; 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; struct lua_model *env = (struct lua_model *)plugin_env;
/* 获取插件ID并找到该插件 */ /* 获取插件ID并找到该插件 */
int plugin_id = session_get_pluginid(sess); int plugin_id = session_get_current_plugin_id(sess);
// int plugin_id = 1; // int plugin_id = 1;
struct lua_plugin *plugin = NULL; struct lua_plugin *plugin = NULL;
while ((plugin = utarray_next(env->plugin_array, plugin))) while ((plugin = utarray_next(env->plugin_array, plugin)))
@@ -218,7 +220,7 @@ void lpm_on_session_msg_func(
/* 判断该消息是由C端插件产生的还是由Lua插件产生的 */ /* 判断该消息是由C端插件产生的还是由Lua插件产生的 */
struct lua_message_mq *message_mq = search_message_mq_by_id(topic_id); 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) if (thread_id > global_schema->state_count)
return; return;
lua_State *state = global_schema->thread_state[thread_id]; lua_State *state = global_schema->thread_state[thread_id];