Skip to content

Commit f05e87f

Browse files
committed
modify:delete plugin configure and plugin auto load support
1 parent fa38475 commit f05e87f

File tree

19 files changed

+331
-290
lines changed

19 files changed

+331
-290
lines changed

XEngine_Release/XEngine_Config/XEngine_Config.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"LogType":32
2525
},
2626
"XSql":{
27-
"bEnable":true,
27+
"bEnable":false,
2828
"SQLAddr":"10.0.2.6",
2929
"SQLPort":3306,
3030
"SQLUser":"root",
@@ -42,7 +42,8 @@
4242
},
4343
"XPlugin":{
4444
"bEnable":true,
45-
"tszPlugin":"./XEngine_Config/XEngine_Plugin.json"
45+
"tszLibPlugin":"./XEngine_LibPlugin",
46+
"tszLuaPlugin":"./XEngine_LuaPlugin"
4647
},
4748
"XConfig":{
4849
"st_ConfigQRCode":{

XEngine_Release/XEngine_Config/XEngine_Plugin.json

Lines changed: 0 additions & 46 deletions
This file was deleted.

XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@ typedef struct
6666
}st_XApi;
6767
struct
6868
{
69-
bool bEnable; //是否启用
70-
XCHAR tszPlugin[XPATH_MAX]; //配置文件地址
69+
bool bEnable; //是否启用
70+
XCHAR tszLibPlugin[XPATH_MAX];
71+
XCHAR tszLuaPlugin[XPATH_MAX];
7172
}st_XPlugin;
7273
struct
7374
{
@@ -128,18 +129,6 @@ typedef struct
128129
list<string>* pStl_ListVer;
129130
}st_XVer;
130131
}XENGINE_SERVICECONFIG;
131-
//插件
132-
typedef struct
133-
{
134-
bool bEnable;
135-
XCHAR tszPluginMethod[XPATH_MAX];
136-
XCHAR tszPluginFile[XPATH_MAX];
137-
}XENGINE_PLUGININFO;
138-
typedef struct
139-
{
140-
list<XENGINE_PLUGININFO>* pStl_ListPluginModule;
141-
list<XENGINE_PLUGININFO>* pStl_ListPluginLua;
142-
}XENGINE_PLUGINCONFIG;
143132
//////////////////////////////////////////////////////////////////////////
144133
typedef struct
145134
{
@@ -215,25 +204,6 @@ extern "C" bool ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XENGINE_SERVIC
215204
*********************************************************************/
216205
extern "C" bool ModuleConfigure_Json_VersionFile(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig);
217206
/********************************************************************
218-
函数名称:ModuleConfigure_Json_PluginFile
219-
函数功能:读取JSON配置文件
220-
参数.一:lpszConfigFile
221-
In/Out:In
222-
类型:常量字符指针
223-
可空:N
224-
意思:输入要读取的配置文件
225-
参数.二:pSt_PluginConfig
226-
In/Out:Out
227-
类型:数据结构指针
228-
可空:N
229-
意思:输出插件配置信息
230-
返回值
231-
类型:逻辑型
232-
意思:是否成功
233-
备注:
234-
*********************************************************************/
235-
extern "C" bool ModuleConfigure_Json_PluginFile(LPCXSTR lpszConfigFile, XENGINE_PLUGINCONFIG* pSt_PluginConfig);
236-
/********************************************************************
237207
函数名称:ModuleConfigure_Json_DeamonList
238208
函数功能:读取JSON配置文件
239209
参数.一:lpszConfigFile

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp

Lines changed: 3 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,16 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
146146
_tcsxcpy(pSt_ServerConfig->st_XSql.tszSQLUser, st_JsonXSql["SQLUser"].asCString());
147147
_tcsxcpy(pSt_ServerConfig->st_XSql.tszSQLPass, st_JsonXSql["SQLPass"].asCString());
148148

149-
if (st_JsonRoot["XPlugin"].empty() || (2 != st_JsonRoot["XPlugin"].size()))
149+
if (st_JsonRoot["XPlugin"].empty() || (3 != st_JsonRoot["XPlugin"].size()))
150150
{
151151
Config_IsErrorOccur = true;
152152
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XPLUGIN;
153153
return false;
154154
}
155155
Json::Value st_JsonXPlugin = st_JsonRoot["XPlugin"];
156156
pSt_ServerConfig->st_XPlugin.bEnable = st_JsonXPlugin["bEnable"].asBool();
157-
_tcsxcpy(pSt_ServerConfig->st_XPlugin.tszPlugin, st_JsonXPlugin["tszPlugin"].asCString());
157+
_tcsxcpy(pSt_ServerConfig->st_XPlugin.tszLibPlugin, st_JsonXPlugin["tszLibPlugin"].asCString());
158+
_tcsxcpy(pSt_ServerConfig->st_XPlugin.tszLuaPlugin, st_JsonXPlugin["tszLuaPlugin"].asCString());
158159

159160
if (st_JsonRoot["XConfig"].empty() || (4 != st_JsonRoot["XConfig"].size()))
160161
{
@@ -306,100 +307,6 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_VersionFile(LPCXSTR lpszConfigF
306307
return true;
307308
}
308309
/********************************************************************
309-
函数名称:ModuleConfigure_Json_PluginFile
310-
函数功能:读取JSON配置文件
311-
参数.一:lpszConfigFile
312-
In/Out:In
313-
类型:常量字符指针
314-
可空:N
315-
意思:输入要读取的配置文件
316-
参数.二:pSt_PluginConfig
317-
In/Out:Out
318-
类型:数据结构指针
319-
可空:N
320-
意思:输出插件配置信息
321-
返回值
322-
类型:逻辑型
323-
意思:是否成功
324-
备注:
325-
*********************************************************************/
326-
bool CModuleConfigure_Json::ModuleConfigure_Json_PluginFile(LPCXSTR lpszConfigFile, XENGINE_PLUGINCONFIG* pSt_PluginConfig)
327-
{
328-
Config_IsErrorOccur = false;
329-
330-
if ((NULL == lpszConfigFile) || (NULL == pSt_PluginConfig))
331-
{
332-
Config_IsErrorOccur = true;
333-
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_PARAMENT;
334-
return false;
335-
}
336-
Json::Value st_JsonRoot;
337-
JSONCPP_STRING st_JsonError;
338-
Json::CharReaderBuilder st_JsonBuilder;
339-
//读取配置文件所有内容到缓冲区
340-
FILE* pSt_File = _xtfopen(lpszConfigFile, _X("rb"));
341-
if (NULL == pSt_File)
342-
{
343-
Config_IsErrorOccur = true;
344-
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_OPENFILE;
345-
return false;
346-
}
347-
XCHAR tszMsgBuffer[8192] = {};
348-
size_t nRet = fread(tszMsgBuffer, 1, sizeof(tszMsgBuffer), pSt_File);
349-
fclose(pSt_File);
350-
//开始解析配置文件
351-
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_JsonBuilder.newCharReader());
352-
if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nRet, &st_JsonRoot, &st_JsonError))
353-
{
354-
Config_IsErrorOccur = true;
355-
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_PARSE;
356-
return false;
357-
}
358-
//申请内存
359-
pSt_PluginConfig->pStl_ListPluginLua = new list<XENGINE_PLUGININFO>;
360-
pSt_PluginConfig->pStl_ListPluginModule = new list<XENGINE_PLUGININFO>;
361-
if (NULL == pSt_PluginConfig->pStl_ListPluginLua || NULL == pSt_PluginConfig->pStl_ListPluginModule)
362-
{
363-
Config_IsErrorOccur = true;
364-
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_MALLOC;
365-
return false;
366-
}
367-
//解析module列表
368-
Json::Value st_JsonModuleArray = st_JsonRoot["PluginModule"];
369-
for (unsigned int i = 0; i < st_JsonModuleArray.size(); i++)
370-
{
371-
XENGINE_PLUGININFO st_PluginInfo;
372-
memset(&st_PluginInfo, '\0', sizeof(XENGINE_PLUGININFO));
373-
374-
st_PluginInfo.bEnable = st_JsonModuleArray[i]["PluginEnable"].asBool();
375-
_tcsxcpy(st_PluginInfo.tszPluginFile, st_JsonModuleArray[i]["PluginFile"].asCString());
376-
#ifdef _MSC_BUILD
377-
_tcsxcat(st_PluginInfo.tszPluginFile, ".dll");
378-
#elif __linux__
379-
_tcsxcat(st_PluginInfo.tszPluginFile, ".so");
380-
#else
381-
_tcsxcat(st_PluginInfo.tszPluginFile, ".dylib");
382-
#endif
383-
_tcsxcpy(st_PluginInfo.tszPluginMethod, st_JsonModuleArray[i]["PluginMethod"].asCString());
384-
385-
pSt_PluginConfig->pStl_ListPluginModule->push_back(st_PluginInfo);
386-
}
387-
//解析lua列表
388-
Json::Value st_JsonLuaArray = st_JsonRoot["PluginLua"];
389-
for (unsigned int i = 0; i < st_JsonLuaArray.size(); i++)
390-
{
391-
XENGINE_PLUGININFO st_PluginInfo;
392-
memset(&st_PluginInfo, '\0', sizeof(XENGINE_PLUGININFO));
393-
394-
st_PluginInfo.bEnable = st_JsonLuaArray[i]["PluginEnable"].asBool();
395-
_tcsxcpy(st_PluginInfo.tszPluginFile, st_JsonLuaArray[i]["PluginFile"].asCString());
396-
_tcsxcpy(st_PluginInfo.tszPluginMethod, st_JsonLuaArray[i]["PluginMethod"].asCString());
397-
398-
pSt_PluginConfig->pStl_ListPluginLua->push_back(st_PluginInfo);
399-
}
400-
return true;
401-
}
402-
/********************************************************************
403310
函数名称:ModuleConfigure_Json_DeamonList
404311
函数功能:读取JSON配置文件
405312
参数.一:lpszConfigFile

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class CModuleConfigure_Json
1919
public:
2020
bool ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig);
2121
bool ModuleConfigure_Json_VersionFile(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig);
22-
bool ModuleConfigure_Json_PluginFile(LPCXSTR lpszConfigFile, XENGINE_PLUGINCONFIG* pSt_PluginConfig);
2322
bool ModuleConfigure_Json_DeamonList(LPCXSTR lpszConfigFile, XENGINE_DEAMONAPPLIST* pSt_AppConfig);
2423
protected:
2524
private:

XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,4 @@ EXPORTS
55

66
ModuleConfigure_Json_File
77
ModuleConfigure_Json_VersionFile
8-
ModuleConfigure_Json_PluginFile
98
ModuleConfigure_Json_DeamonList

XEngine_Source/XEngine_ModuleConfigure/pch.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,6 @@ extern "C" bool ModuleConfigure_Json_VersionFile(LPCXSTR lpszConfigFile, XENGINE
3737
{
3838
return m_ConfigJson.ModuleConfigure_Json_VersionFile(lpszConfigFile, pSt_ServerConfig);
3939
}
40-
extern "C" bool ModuleConfigure_Json_PluginFile(LPCXSTR lpszConfigFile, XENGINE_PLUGINCONFIG * pSt_PluginConfig)
41-
{
42-
return m_ConfigJson.ModuleConfigure_Json_PluginFile(lpszConfigFile, pSt_PluginConfig);
43-
}
4440
extern "C" bool ModuleConfigure_Json_DeamonList(LPCXSTR lpszConfigFile, XENGINE_DEAMONAPPLIST * pSt_AppConfig)
4541
{
4642
return m_ConfigJson.ModuleConfigure_Json_DeamonList(lpszConfigFile, pSt_AppConfig);

XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Define.h

Lines changed: 71 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,40 @@ extern "C" bool ModulePlugin_LibCore_Push(XNETHANDLE * pxhNet, LPCXSTR lpszPlugi
100100
*********************************************************************/
101101
extern "C" bool ModulePlugin_LibCore_Exec(XNETHANDLE xhModule, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0);
102102
/********************************************************************
103+
函数名称:ModulePlugin_LibCore_Get
104+
函数功能:获取插件基础信息函数
105+
参数.一:xhModule
106+
In/Out:In
107+
类型:句柄
108+
可空:N
109+
意思:要操作的模块句柄
110+
参数.二:ptszPluginName
111+
In/Out:Out
112+
类型:字符指针
113+
可空:N
114+
意思:处理名称
115+
参数.三:ptszPluginVersion
116+
In/Out:Out
117+
类型:字符指针
118+
可空:N
119+
意思:版本号.使用x.x.x.x 格式
120+
参数.四:ptszPluginAuthor
121+
In/Out:Out
122+
类型:字符指针
123+
可空:N
124+
意思:作者
125+
参数.五:ptszPluginDesc
126+
In/Out:Out
127+
类型:字符指针
128+
可空:N
129+
意思:插件描述
130+
返回值
131+
类型:逻辑型
132+
意思:是否成功
133+
备注:
134+
*********************************************************************/
135+
extern "C" bool ModulePlugin_LibCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc);
136+
/********************************************************************
103137
函数名称:ModulePlugin_LibCore_Destroy
104138
函数功能:销毁插件核心并且清理资源
105139
返回值
@@ -194,6 +228,40 @@ extern "C" bool ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPlu
194228
*********************************************************************/
195229
extern "C" bool ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0);
196230
/********************************************************************
231+
函数名称:ModulePlugin_LuaCore_Get
232+
函数功能:获取插件基础信息函数
233+
参数.一:xhModule
234+
In/Out:In
235+
类型:句柄
236+
可空:N
237+
意思:要操作的模块句柄
238+
参数.二:ptszPluginName
239+
In/Out:Out
240+
类型:字符指针
241+
可空:N
242+
意思:处理名称
243+
参数.三:ptszPluginVersion
244+
In/Out:Out
245+
类型:字符指针
246+
可空:N
247+
意思:版本号.使用x.x.x.x 格式
248+
参数.四:ptszPluginAuthor
249+
In/Out:Out
250+
类型:字符指针
251+
可空:N
252+
意思:作者
253+
参数.五:ptszPluginDesc
254+
In/Out:Out
255+
类型:字符指针
256+
可空:N
257+
意思:插件描述
258+
返回值
259+
类型:逻辑型
260+
意思:是否成功
261+
备注:
262+
*********************************************************************/
263+
extern "C" bool ModulePlugin_LuaCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc);
264+
/********************************************************************
197265
函数名称:ModulePlugin_LuaCore_Destroy
198266
函数功能:销毁插件核心并且清理资源
199267
返回值
@@ -217,17 +285,12 @@ extern "C" bool ModulePlugin_Loader_Init();
217285
/********************************************************************
218286
函数名称:ModulePlugin_Loader_Insert
219287
函数功能:插入一个模块到加载器
220-
参数.一:lpszModuleMethod
221-
In/Out:In
222-
类型:常量字符指针
223-
可空:N
224-
意思:插件方法名
225-
参数.二:lpszModuleName
288+
参数.一:lpszModuleName
226289
In/Out:In
227290
类型:常量字符指针
228291
可空:N
229292
意思:插件路径
230-
参数.:nType
293+
参数.:nType
231294
In/Out:In
232295
类型:整数型
233296
可空:Y
@@ -237,7 +300,7 @@ extern "C" bool ModulePlugin_Loader_Init();
237300
意思:是否成功
238301
备注:
239302
*********************************************************************/
240-
extern "C" bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleMethod, LPCXSTR lpszModuleName, int nType = 0);
303+
extern "C" bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleName, int nType = 0);
241304
/********************************************************************
242305
函数名称:ModulePlugin_Loader_Find
243306
函数功能:查找方法是否注册

0 commit comments

Comments
 (0)