Skip to content

Commit d0392d1

Browse files
committed
modify:get more info support for plugin module
1 parent 9f02430 commit d0392d1

File tree

7 files changed

+54
-27
lines changed

7 files changed

+54
-27
lines changed

XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Error.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@
2323
#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND 0xE1008 //没有找到句柄
2424
#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_ISINITED 0xE1009 //已经初始化了,不需要再次初始化
2525
#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION 0xE100A //插件执行失败
26-
#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_MALLOC 0xE100B //申请内存失败
26+
#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_MALLOC 0xE100B //申请内存失败
27+
#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_GETINFO 0xE100C //获取插件信息失败

XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.cpp

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -248,11 +248,7 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR l
248248
#endif
249249
if (NULL == st_FrameWork.fpCall_PluginCore_Init)
250250
{
251-
#ifdef _MSC_BUILD
252-
FreeLibrary(st_FrameWork.mhFile);
253-
#else
254-
dlclose(st_FrameWork.mhFile);
255-
#endif
251+
XFreeModule(st_FrameWork.mhFile);
256252
ModulePlugin_IsErrorOccur = true;
257253
ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPINIT;
258254
return false;
@@ -264,11 +260,7 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR l
264260
#endif
265261
if (NULL == st_FrameWork.fpCall_PluginCore_UnInit)
266262
{
267-
#ifdef _MSC_BUILD
268-
FreeLibrary(st_FrameWork.mhFile);
269-
#else
270-
dlclose(st_FrameWork.mhFile);
271-
#endif
263+
XFreeModule(st_FrameWork.mhFile);
272264
ModulePlugin_IsErrorOccur = true;
273265
ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPUNINIT;
274266
return false;
@@ -280,11 +272,7 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR l
280272
#endif
281273
if (NULL == st_FrameWork.fpCall_PluginCore_Call)
282274
{
283-
#ifdef _MSC_BUILD
284-
FreeLibrary(st_FrameWork.mhFile);
285-
#else
286-
dlclose(st_FrameWork.mhFile);
287-
#endif
275+
XFreeModule(st_FrameWork.mhFile);
288276
ModulePlugin_IsErrorOccur = true;
289277
ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPCALL;
290278
return false;
@@ -296,26 +284,35 @@ bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR l
296284
#endif
297285
if (NULL == st_FrameWork.fpCall_PluginCore_GetLastError)
298286
{
299-
#ifdef _MSC_BUILD
300-
FreeLibrary(st_FrameWork.mhFile);
301-
#else
302-
dlclose(st_FrameWork.mhFile);
303-
#endif
287+
XFreeModule(st_FrameWork.mhFile);
304288
ModulePlugin_IsErrorOccur = true;
305289
ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPERROR;
306290
return false;
307291
}
292+
//得到插件信息函数
293+
XFreeModule(st_FrameWork.mhFile);
294+
if (NULL == st_FrameWork.fpCall_PluginCore_GetInfo)
295+
{
296+
XFreeModule(st_FrameWork.mhFile);
297+
ModulePlugin_IsErrorOccur = true;
298+
ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_GETINFO;
299+
return false;
300+
}
308301
//初始化内部模块
309302
if (!st_FrameWork.fpCall_PluginCore_Init(lParam))
310303
{
311-
#ifdef _MSC_BUILD
312-
FreeLibrary(st_FrameWork.mhFile);
313-
#else
314-
dlclose(st_FrameWork.mhFile);
315-
#endif
304+
XFreeModule(st_FrameWork.mhFile);
316305
ModulePlugin_IsErrorOccur = true;
317306
ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_INIT;
318307
return false;
308+
}
309+
//获得内部模块信息
310+
if (!st_FrameWork.fpCall_PluginCore_GetInfo(st_FrameWork.tszModuleName, st_FrameWork.tszModuleVer, st_FrameWork.tszModuleAuthor, st_FrameWork.tszModuleDesc))
311+
{
312+
XFreeModule(st_FrameWork.mhFile);
313+
ModulePlugin_IsErrorOccur = true;
314+
ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_INIT;
315+
return false;
319316
}
320317
_tcsxcpy(st_FrameWork.tszModuleFile, lpszPluginFile);
321318

XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
*********************************************************************/
1313
typedef bool(*FPCall_PluginCore_Init)(XPVOID lParam);
1414
typedef void(*FPCall_PluginCore_UnInit)();
15+
typedef bool(*FPCall_PluginCore_GetInfo)(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc);
1516
typedef bool(*FPCall_PluginCore_Call)(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen);
1617
typedef XLONG(*FPCall_PluginCore_GetLastError)();
1718

@@ -23,9 +24,14 @@ typedef struct
2324
void* mhFile;
2425
#endif
2526
XCHAR tszModuleFile[XPATH_MAX];
27+
XCHAR tszModuleName[128];
28+
XCHAR tszModuleAuthor[128];
29+
XCHAR tszModuleDesc[128];
30+
XCHAR tszModuleVer[64];
2631

2732
bool(*fpCall_PluginCore_Init)(XPVOID lParam);
2833
void(*fpCall_PluginCore_UnInit)();
34+
bool(*fpCall_PluginCore_GetInfo)(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc);
2935
bool(*fpCall_PluginCore_Call)(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen);
3036
XLONG(*fpCall_PluginCore_GetLastError)();
3137
}PLUGINCORE_FRAMEWORK, * LPPLUGINCORE_FRAMEWORK;

XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
<PropertyGroup Label="UserMacros" />
100100
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
101101
<LinkIncremental>true</LinkIncremental>
102-
<IncludePath>$(XEngine_Include);$(IncludePath)</IncludePath>
102+
<IncludePath>$(XEngine_Include);..\XEngine_ModulePlugin;$(IncludePath)</IncludePath>
103103
<LibraryPath>$(XEngine_Lib32);$(LibraryPath)</LibraryPath>
104104
</PropertyGroup>
105105
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

XEngine_Source/XEngine_ModulePlugin/pch.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ using namespace std;
4949
extern bool ModulePlugin_IsErrorOccur;
5050
extern XLONG ModulePlugin_dwErrorCode;
5151

52+
5253
#ifdef _MSC_BUILD
5354
#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib")
55+
56+
#define XFreeModule FreeLibrary
57+
#else
58+
#define XFreeModule dlclose
5459
#endif

XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,23 @@ void CPlugin_Password::PluginCore_UnInit()
5151
{
5252
Pass_IsErrorOccur = false;
5353
}
54+
bool CPlugin_Password::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc)
55+
{
56+
Pass_IsErrorOccur = false;
57+
58+
if ((NULL == ptszPluginName) || (NULL == ptszPluginVersion) || (NULL == ptszPluginAuthor) || (NULL == ptszPluginDesc))
59+
{
60+
Pass_IsErrorOccur = true;
61+
Pass_dwErrorCode = ERROR_XENGINE_APISERVICE_PLUGIN_MODULE_PASS_PARAMENT;
62+
return false;
63+
}
64+
65+
_tcsxcpy(ptszPluginName, "Password Generator");
66+
_tcsxcpy(ptszPluginVersion, "1.0.0.1001");
67+
_tcsxcpy(ptszPluginAuthor, "qyt");
68+
_tcsxcpy(ptszPluginDesc, "Password Generator Plugin for XEngine API Service");
69+
return true;
70+
}
5471
/********************************************************************
5572
函数名称:PluginCore_Call
5673
函数功能:调用插件

XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class CPlugin_Password
1919
public:
2020
bool PluginCore_Init(XPVOID lParam);
2121
void PluginCore_UnInit();
22+
bool PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc);
2223
bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen);
2324
protected:
2425
bool Plugin_Password_Creator(LPCXSTR lpszPassType, LPCXSTR lpszLength, XCHAR* ptszPassStr);

0 commit comments

Comments
 (0)