Skip to content

Commit 09b3c44

Browse files
committed
added:configure hot reload supported
1 parent 47b9353 commit 09b3c44

File tree

10 files changed

+83
-2
lines changed

10 files changed

+83
-2
lines changed

XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ typedef struct
6767
int nHTTPCode; //转发模式,301 永久,302 临时
6868
}st_XShortLink;
6969
struct
70+
{
71+
bool bReload; //配置重载
72+
XBYTE byCode; //1基本配置,2插件,3全部
73+
}st_XReload;
74+
struct
7075
{
7176
list<string>* pStl_ListVer;
7277
}st_XVer;

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Configure.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pS
1414
{
1515
LPCXSTR lpszConfigFile = _X("./XEngine_Config/XEngine_Config.json");
1616

17+
if (NULL != pSt_Configure->st_XVer.pStl_ListVer)
18+
{
19+
delete pSt_Configure->st_XVer.pStl_ListVer;
20+
pSt_Configure->st_XVer.pStl_ListVer = NULL;
21+
}
22+
memset(pSt_Configure, '\0', sizeof(XENGINE_SERVICECONFIG));
1723
if (!ModuleConfigure_Json_File(lpszConfigFile, pSt_Configure))
1824
{
1925
printf("解析配置文件失败,ModuleConfigure_Json_File:%lX\n", ModuleConfigure_GetLastError());
@@ -31,6 +37,11 @@ bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pS
3137
{
3238
pSt_Configure->bDeamon = _ttxoi(argv[i + 1]);
3339
}
40+
else if (0 == _tcsxcmp("-r", argv[i]))
41+
{
42+
pSt_Configure->st_XReload.bReload = true;
43+
pSt_Configure->st_XReload.byCode = _ttxoi(argv[i + 1]);
44+
}
3445
}
3546

3647
return true;

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST
101101
LPCXSTR lpszParamLanguage = _X("language");
102102
LPCXSTR lpszParamTranslation = _X("translation");
103103
LPCXSTR lpszParamLocker = _X("lock");
104+
LPCXSTR lpszParamReload = _X("reload");
104105
//post
105106
LPCXSTR lpszParamP2PClient = _X("p2p");
106107
LPCXSTR lpszParamZIPCode = _X("zipcode");
@@ -263,7 +264,14 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST
263264
}
264265
else if (0 == _tcsxnicmp(lpszMethodGet, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodGet)))
265266
{
266-
if (0 == _tcsxnicmp(lpszParamIDCard, tszValue, _tcsxlen(lpszParamIDCard)))
267+
if (0 == _tcsxnicmp(lpszParamReload, tszValue, _tcsxlen(lpszParamReload)))
268+
{
269+
//是不是配置重载
270+
memset(tszKey, '\0', sizeof(tszKey));
271+
BaseLib_OperatorString_GetKeyValue(pptszList[1], "=", tszKey, tszValue);
272+
HTTPTask_TaskGet_Reload(lpszClientAddr, tszValue);
273+
}
274+
else if (0 == _tcsxnicmp(lpszParamIDCard, tszValue, _tcsxlen(lpszParamIDCard)))
267275
{
268276
//是不是身份证查询
269277
memset(tszKey, '\0', sizeof(tszKey));

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ using namespace std;
7272
#include "XEngine_TaskGet/TaskGet_Language.h"
7373
#include "XEngine_TaskGet/TaskGet_Translation.h"
7474
#include "XEngine_TaskGet/TaskGet_Locker.h"
75+
#include "XEngine_TaskGet/TaskGet_Reload.h"
7576
/********************************************************************
7677
// Created: 2022/01/20 14:42:06
7778
// File Name: D:\XEngine_ServiceApp\XEngine_Source\XEngine_ServiceApp\XEngine_HttpApp\XEngine_Hdr.h

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,17 @@ int main(int argc, char** argv)
112112
{
113113
return -1;
114114
}
115+
//配置重载
116+
if (st_ServiceConfig.st_XReload.bReload)
117+
{
118+
//重载配置文件后退出
119+
XCHAR tszAddr[128];
120+
memset(tszAddr, '\0', sizeof(tszAddr));
121+
//http://127.0.0.1:5501/api?function=reload&opcode=1
122+
_xstprintf(tszAddr, _X("http://127.0.0.1:%d/api?function=reload&opcode=%d"), st_ServiceConfig.nHttpPort, st_ServiceConfig.st_XReload.byCode);
123+
APIClient_Http_Request(_X("GET"), tszAddr);
124+
return 0;
125+
}
115126
//判断是否以守护进程启动
116127
if (st_ServiceConfig.bDeamon)
117128
{

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@
162162
<ClCompile Include="XEngine_TaskGet\TaskGet_IDCard.cpp" />
163163
<ClCompile Include="XEngine_TaskGet\TaskGet_Language.cpp" />
164164
<ClCompile Include="XEngine_TaskGet\TaskGet_Locker.cpp" />
165+
<ClCompile Include="XEngine_TaskGet\TaskGet_Reload.cpp" />
165166
<ClCompile Include="XEngine_TaskGet\TaskGet_Translation.cpp" />
166167
<ClCompile Include="XEngine_TaskPost\TaskPost_DTest.cpp" />
167168
<ClCompile Include="XEngine_TaskPost\TaskPost_Log.cpp" />
@@ -181,6 +182,7 @@
181182
<ClInclude Include="XEngine_TaskGet\TaskGet_IDCard.h" />
182183
<ClInclude Include="XEngine_TaskGet\TaskGet_Language.h" />
183184
<ClInclude Include="XEngine_TaskGet\TaskGet_Locker.h" />
185+
<ClInclude Include="XEngine_TaskGet\TaskGet_Reload.h" />
184186
<ClInclude Include="XEngine_TaskGet\TaskGet_Translation.h" />
185187
<ClInclude Include="XEngine_TaskPost\TaskPost_ShortLink.h" />
186188
<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
@@ -78,6 +78,9 @@
7878
<ClCompile Include="XEngine_TaskPost\TaskPost_ShortLink.cpp">
7979
<Filter>源文件\XEngine_TaskPost</Filter>
8080
</ClCompile>
81+
<ClCompile Include="XEngine_TaskGet\TaskGet_Reload.cpp">
82+
<Filter>源文件\XEngine_TaskGet</Filter>
83+
</ClCompile>
8184
</ItemGroup>
8285
<ItemGroup>
8386
<ClInclude Include="XEngine_Configure.h">
@@ -131,5 +134,8 @@
131134
<ClInclude Include="XEngine_TaskPost\TaskPost_ShortLink.h">
132135
<Filter>头文件\XEngine_TaskPost</Filter>
133136
</ClInclude>
137+
<ClInclude Include="XEngine_TaskGet\TaskGet_Reload.h">
138+
<Filter>头文件\XEngine_TaskGet</Filter>
139+
</ClInclude>
134140
</ItemGroup>
135141
</Project>
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<PropertyGroup />
3+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
4+
<LocalDebuggerCommandArguments>-r 0</LocalDebuggerCommandArguments>
5+
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
6+
</PropertyGroup>
47
</Project>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include "../XEngine_Hdr.h"
2+
3+
4+
bool HTTPTask_TaskGet_Reload(LPCXSTR lpszClientAddr, LPCXSTR lpszOPCode)
5+
{
6+
int nMsgLen = 4096;
7+
int nPktLen = 4096;
8+
XCHAR tszMsgBuffer[4096];
9+
XCHAR tszPktBuffer[4096];
10+
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam; //发送给客户端的参数
11+
12+
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
13+
memset(tszPktBuffer, '\0', sizeof(tszPktBuffer));
14+
memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM));
15+
16+
st_HDRParam.nHttpCode = 200; //HTTP CODE码
17+
st_HDRParam.bIsClose = true; //收到回复后就关闭
18+
19+
if (0 == _ttxoi(lpszOPCode))
20+
{
21+
XEngine_Configure_Parament(0, NULL, &st_ServiceConfig);
22+
HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam);
23+
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
24+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求操作配置重载成功,操作的配置:%s"), lpszClientAddr, lpszOPCode);
25+
}
26+
else if (1 == _ttxoi(lpszOPCode))
27+
{
28+
29+
}
30+
return true;
31+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#pragma once
2+
3+
bool HTTPTask_TaskGet_Reload(LPCXSTR lpszClientAddr, LPCXSTR lpszOPCode);

0 commit comments

Comments
 (0)