Skip to content

Commit e9857c2

Browse files
committed
modify:init configure does not need configure parament
modify:does not directly exit when configure init failed. added:permission handle added:process deamon configure load
1 parent 9ae3ddb commit e9857c2

File tree

7 files changed

+73
-22
lines changed

7 files changed

+73
-22
lines changed

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Configure.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@
1010
// Purpose: 配置文件操作代码
1111
// History:
1212
*********************************************************************/
13-
bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pSt_Configure)
13+
bool XEngine_Configure_Parament(int argc, char** argv)
1414
{
1515
LPCXSTR lpszConfigFile = _X("./XEngine_Config/XEngine_Config.json");
16-
17-
if (NULL != pSt_Configure->st_XVer.pStl_ListVer)
16+
17+
if (NULL != st_ServiceConfig.st_XVer.pStl_ListVer)
1818
{
19-
delete pSt_Configure->st_XVer.pStl_ListVer;
20-
pSt_Configure->st_XVer.pStl_ListVer = NULL;
19+
delete st_ServiceConfig.st_XVer.pStl_ListVer;
20+
st_ServiceConfig.st_XVer.pStl_ListVer = NULL;
2121
}
22-
memset(pSt_Configure, '\0', sizeof(XENGINE_SERVICECONFIG));
23-
if (!ModuleConfigure_Json_File(lpszConfigFile, pSt_Configure))
22+
memset(&st_ServiceConfig, '\0', sizeof(XENGINE_SERVICECONFIG));
23+
if (!ModuleConfigure_Json_File(lpszConfigFile, &st_ServiceConfig))
2424
{
2525
printf("解析配置文件失败,ModuleConfigure_Json_File:%lX\n", ModuleConfigure_GetLastError());
2626
return false;
@@ -35,12 +35,12 @@ bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pS
3535
}
3636
else if (0 == _tcsxcmp("-d", argv[i]))
3737
{
38-
pSt_Configure->bDeamon = _ttxoi(argv[i + 1]);
38+
st_ServiceConfig.bDeamon = _ttxoi(argv[i + 1]);
3939
}
4040
else if (0 == _tcsxcmp("-r", argv[i]))
4141
{
42-
pSt_Configure->st_XReload.bReload = true;
43-
pSt_Configure->st_XReload.byCode = _ttxoi(argv[i + 1]);
42+
st_ServiceConfig.st_XReload.bReload = true;
43+
st_ServiceConfig.st_XReload.byCode = _ttxoi(argv[i + 1]);
4444
}
4545
}
4646

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Configure.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@
1010
// Purpose: 配置文件操作代码
1111
// History:
1212
*********************************************************************/
13-
bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pSt_Configure);
13+
bool XEngine_Configure_Parament(int argc, char** argv);
1414
void XEngine_Configure_Help();

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ using namespace std;
8181
#include "XEngine_TaskPost/TaskPost_WordFilter.h"
8282
#include "XEngine_TaskPost/TaskPost_BackService.h"
8383
#include "XEngine_TaskPost/TaskPost_Image.h"
84+
#include "XEngine_TaskPost/TaskPost_Deamon.h"
8485
//get
8586
#include "XEngine_TaskGet/TaskGet_IDCard.h"
8687
#include "XEngine_TaskGet/TaskGet_Bank.h"
@@ -108,12 +109,15 @@ extern XHANDLE xhHTTPSocket;
108109
extern XHANDLE xhHTTPHeart;
109110
extern XHANDLE xhHTTPPacket;
110111
extern XHANDLE xhHTTPPool;
112+
//线程
113+
extern unique_ptr<thread> pSTDThread_Deamon;
111114
//配置文件
112115
extern XENGINE_SERVICECONFIG st_ServiceConfig;
113116
extern XENGINE_OPENCCCONFIG st_OPenccConfig;
114117
extern XENGINE_QRCODECONFIG st_QRCodeConfig;
115118
extern XENGINE_PLUGINCONFIG st_PluginLibConfig;
116119
extern XENGINE_PLUGINCONFIG st_PluginLuaConfig;
120+
extern XENGINE_DEAMONAPPLIST st_DeamonAppConfig;
117121
//连接库
118122
#ifdef _MSC_BUILD
119123
#ifdef _WIN64

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,15 @@ XHANDLE xhHTTPSocket = NULL;
1717
XHANDLE xhHTTPHeart = NULL;
1818
XHANDLE xhHTTPPacket = NULL;
1919
XHANDLE xhHTTPPool = 0;
20+
//线程
21+
unique_ptr<thread> pSTDThread_Deamon;
2022
//配置文件
2123
XENGINE_SERVICECONFIG st_ServiceConfig;
2224
XENGINE_OPENCCCONFIG st_OPenccConfig;
2325
XENGINE_QRCODECONFIG st_QRCodeConfig;
2426
XENGINE_PLUGINCONFIG st_PluginLibConfig;
2527
XENGINE_PLUGINCONFIG st_PluginLuaConfig;
28+
XENGINE_DEAMONAPPLIST st_DeamonAppConfig;
2629

2730
void ServiceApp_Stop(int signo)
2831
{
@@ -47,6 +50,11 @@ void ServiceApp_Stop(int signo)
4750
ModuleHelp_P2PClient_Destory();
4851
//销毁日志资源
4952
HelpComponents_XLog_Destroy(xhLog);
53+
//销毁线程
54+
if (NULL != pSTDThread_Deamon)
55+
{
56+
pSTDThread_Deamon->join();
57+
}
5058
}
5159
#ifdef _MSC_BUILD
5260
WSACleanup();
@@ -94,6 +102,7 @@ int main(int argc, char** argv)
94102
LPCXSTR lpszHTTPMime = _X("./XEngine_Config/HttpMime.types");
95103
LPCXSTR lpszHTTPCode = _X("./XEngine_Config/HttpCode.types");
96104
LPCXSTR lpszLogFile = _X("./XEngine_Log/XEngine_HttpApp.Log");
105+
LPCXSTR lpszConfigDeamon = _X("./XEngine_Config/XEngine_DeamonConfig.json");
97106
HELPCOMPONENTS_XLOG_CONFIGURE st_XLogConfig;
98107
THREADPOOL_PARAMENT** ppSt_ListHTTPParam;
99108

@@ -108,9 +117,9 @@ int main(int argc, char** argv)
108117
st_XLogConfig.XLog_MaxSize = 1024000;
109118
_tcsxcpy(st_XLogConfig.tszFileName, lpszLogFile);
110119
//初始化参数
111-
if (!XEngine_Configure_Parament(argc, argv, &st_ServiceConfig))
120+
if (!XEngine_Configure_Parament(argc, argv))
112121
{
113-
return -1;
122+
goto XENGINE_SERVICEAPP_EXIT;
114123
}
115124
//配置重载
116125
if (st_ServiceConfig.st_XReload.bReload)
@@ -146,15 +155,14 @@ int main(int argc, char** argv)
146155

147156
if (!SystemApi_Process_IsAdmin())
148157
{
149-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,权限验证失败,请切换管理员权限"));
150-
goto XENGINE_SERVICEAPP_EXIT;
158+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,启动权限不足,对于进程和后台服务任务可能会执行失败,请切换管理员权限"));
151159
}
152160
if (!ModuleSystem_API_AutoStart(st_ServiceConfig.bAutoStart))
153161
{
154-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中注册软件开机启动失败!错误:%lX"), ModuleHelp_GetLastError());
162+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,注册软件开机启动失败!错误:%lX"), ModuleHelp_GetLastError());
155163
goto XENGINE_SERVICEAPP_EXIT;
156164
}
157-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中设置软件开机启动标志成功,标志位:%d"), st_ServiceConfig.bAutoStart);
165+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,设置软件开机启动标志成功,标志位:%d"), st_ServiceConfig.bAutoStart);
158166

159167
if (st_ServiceConfig.bHideWnd)
160168
{
@@ -165,12 +173,12 @@ int main(int argc, char** argv)
165173

166174
if (NULL == hWnd)
167175
{
168-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中设置窗口隐藏失败,没有找到句柄"));
176+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,设置窗口隐藏失败,没有找到句柄"));
169177
}
170178
else
171179
{
172180
ShowWindow(hWnd, SW_HIDE);
173-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中设置窗口隐藏成功"));
181+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,设置窗口隐藏成功"));
174182
}
175183
#endif
176184
}
@@ -309,7 +317,32 @@ int main(int argc, char** argv)
309317
goto XENGINE_SERVICEAPP_EXIT;
310318
}
311319
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动P2P客户端管理器成功,超时时间设置:%d 秒"), st_ServiceConfig.st_XTime.nP2PTimeOut);
312-
320+
//进程守护
321+
if (!ModuleConfigure_Json_DeamonList(lpszConfigDeamon, &st_DeamonAppConfig))
322+
{
323+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动加载进程守护配置文件失败,错误:%lX"), ModuleConfigure_GetLastError());
324+
goto XENGINE_SERVICEAPP_EXIT;
325+
}
326+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动加载进程守护配置文件成功"));
327+
for (auto stl_ListIterator = st_DeamonAppConfig.stl_ListDeamonApp.begin(); stl_ListIterator != st_DeamonAppConfig.stl_ListDeamonApp.end(); stl_ListIterator++)
328+
{
329+
if (stl_ListIterator->bEnable)
330+
{
331+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载守护进程:%s,成功,开始守护进程"), stl_ListIterator->tszAPPName);
332+
}
333+
else
334+
{
335+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,加载守护进程:%s,成功,此项目未启用"), stl_ListIterator->tszAPPName);
336+
}
337+
}
338+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载守护进程列表成功,加载的列表个数:%d"), st_DeamonAppConfig.stl_ListDeamonApp.size());
339+
pSTDThread_Deamon = make_unique<thread>(HTTPTask_TaskPost_Thread);
340+
if (NULL == pSTDThread_Deamon)
341+
{
342+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动进程管理线程失败"));
343+
goto XENGINE_SERVICEAPP_EXIT;
344+
}
345+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动进程管理线程成功"));
313346
//启动插件
314347
if (!ModulePlugin_Loader_Init())
315348
{
@@ -364,7 +397,7 @@ int main(int argc, char** argv)
364397
//展示能力
365398
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载的Lib插件:%d 个,Lua插件:%d 个"), st_PluginLibConfig.pStl_ListPlugin->size(), st_PluginLuaConfig.pStl_ListPlugin->size());
366399

367-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动服务运行中XEngine版本:%s%s,发行版本次数:%d,当前版本:%s。。。"), BaseLib_OperatorVer_XNumberStr(), BaseLib_OperatorVer_XTypeStr(), st_ServiceConfig.st_XVer.pStl_ListVer->size(), st_ServiceConfig.st_XVer.pStl_ListVer->front().c_str());
400+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,服务运行中,XEngine版本:%s%s,发行版本次数:%d,当前版本:%s。。。"), BaseLib_OperatorVer_XNumberStr(), BaseLib_OperatorVer_XTypeStr(), st_ServiceConfig.st_XVer.pStl_ListVer->size(), st_ServiceConfig.st_XVer.pStl_ListVer->front().c_str());
368401
while (true)
369402
{
370403
std::this_thread::sleep_for(std::chrono::seconds(1));
@@ -392,9 +425,15 @@ int main(int argc, char** argv)
392425
ModuleHelp_P2PClient_Destory();
393426
//销毁日志资源
394427
HelpComponents_XLog_Destroy(xhLog);
428+
//销毁线程
429+
if (NULL != pSTDThread_Deamon)
430+
{
431+
pSTDThread_Deamon->join();
432+
}
395433
}
396434
#ifdef _MSC_BUILD
397435
WSACleanup();
398436
#endif
437+
getchar();
399438
return 0;
400439
}

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@
165165
<ClCompile Include="XEngine_TaskGet\TaskGet_Reload.cpp" />
166166
<ClCompile Include="XEngine_TaskGet\TaskGet_Translation.cpp" />
167167
<ClCompile Include="XEngine_TaskPost\TaskPost_BackService.cpp" />
168+
<ClCompile Include="XEngine_TaskPost\TaskPost_Deamon.cpp" />
168169
<ClCompile Include="XEngine_TaskPost\TaskPost_DTest.cpp" />
169170
<ClCompile Include="XEngine_TaskPost\TaskPost_Image.cpp" />
170171
<ClCompile Include="XEngine_TaskPost\TaskPost_Log.cpp" />
@@ -188,6 +189,7 @@
188189
<ClInclude Include="XEngine_TaskGet\TaskGet_Reload.h" />
189190
<ClInclude Include="XEngine_TaskGet\TaskGet_Translation.h" />
190191
<ClInclude Include="XEngine_TaskPost\TaskPost_BackService.h" />
192+
<ClInclude Include="XEngine_TaskPost\TaskPost_Deamon.h" />
191193
<ClInclude Include="XEngine_TaskPost\TaskPost_Image.h" />
192194
<ClInclude Include="XEngine_TaskPost\TaskPost_ShortLink.h" />
193195
<ClInclude Include="XEngine_TaskPost\TaskPost_DTest.h" />

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@
9090
<ClCompile Include="XEngine_TaskPost\TaskPost_BackService.cpp">
9191
<Filter>源文件\XEngine_TaskPost</Filter>
9292
</ClCompile>
93+
<ClCompile Include="XEngine_TaskPost\TaskPost_Deamon.cpp">
94+
<Filter>源文件\XEngine_TaskPost</Filter>
95+
</ClCompile>
9396
</ItemGroup>
9497
<ItemGroup>
9598
<ClInclude Include="XEngine_Configure.h">
@@ -155,5 +158,8 @@
155158
<ClInclude Include="XEngine_TaskPost\TaskPost_BackService.h">
156159
<Filter>头文件\XEngine_TaskPost</Filter>
157160
</ClInclude>
161+
<ClInclude Include="XEngine_TaskPost\TaskPost_Deamon.h">
162+
<Filter>头文件\XEngine_TaskPost</Filter>
163+
</ClInclude>
158164
</ItemGroup>
159165
</Project>

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Reload.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ bool HTTPTask_TaskGet_Reload(LPCXSTR lpszClientAddr, LPCXSTR lpszOPCode)
1414

1515
if (0 == _ttxoi(lpszOPCode))
1616
{
17-
XEngine_Configure_Parament(0, NULL, &st_ServiceConfig);
17+
XEngine_Configure_Parament(0, NULL);
1818
HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam);
1919
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
2020
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求操作配置重载成功,操作的配置:%s"), lpszClientAddr, lpszOPCode);

0 commit comments

Comments
 (0)