Skip to content

Commit 21c5958

Browse files
committed
improved:heartbeat management insert and delete and active.
modify:heartbeat to disable and enable support
1 parent ec57315 commit 21c5958

File tree

2 files changed

+51
-15
lines changed

2 files changed

+51
-15
lines changed

XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
bool CALLBACK XEngine_Client_TCPAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
44
{
55
HelpComponents_Datas_CreateEx(xhTCPPacket, lpszClientAddr, 0);
6+
SocketOpt_HeartBeat_InsertAddrEx(xhTCPHeart, lpszClientAddr);
67
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("TCP客户端:%s,进入服务器"), lpszClientAddr);
78
return true;
89
}
@@ -12,6 +13,7 @@ void CALLBACK XEngine_Client_TCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LP
1213
{
1314
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,投递数据包失败,大小:%d,错误:%lX"), lpszClientAddr, nMsgLen, Packets_GetLastError());
1415
}
16+
SocketOpt_HeartBeat_ActiveAddrEx(xhTCPHeart, lpszClientAddr);
1517
}
1618
void CALLBACK XEngine_Client_TCPClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
1719
{
@@ -24,6 +26,7 @@ void CALLBACK XEngine_Client_TCPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, i
2426
//////////////////////////////////////////////////////////////////////////
2527
bool CALLBACK XEngine_Client_WSAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
2628
{
29+
HelpComponents_Datas_CreateEx(xhWSHeart, lpszClientAddr, 0);
2730
RfcComponents_WSPacket_CreateEx(xhWSPacket, lpszClientAddr, 0);
2831
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("WS客户端:%s,进入服务器"), lpszClientAddr);
2932
return true;
@@ -50,6 +53,7 @@ void CALLBACK XEngine_Client_WSRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPC
5053
RfcComponents_WSPacket_SetLoginEx(xhWSPacket, lpszClientAddr);
5154
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("WS客户端:%s,握手成功"), lpszClientAddr);
5255
}
56+
SocketOpt_HeartBeat_ActiveAddrEx(xhWSHeart, lpszClientAddr);
5357
}
5458
void CALLBACK XEngine_Client_WSClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
5559
{
@@ -63,6 +67,7 @@ void CALLBACK XEngine_Client_WSHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, in
6367
bool CALLBACK XEngine_Client_HttpAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
6468
{
6569
HttpProtocol_Server_CreateClientEx(xhHttpPacket, lpszClientAddr, 0);
70+
RfcComponents_WSPacket_CreateEx(xhHTTPHeart, lpszClientAddr, 0);
6671
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,进入服务器"), lpszClientAddr);
6772
return true;
6873
}
@@ -72,6 +77,7 @@ void CALLBACK XEngine_Client_HttpRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, L
7277
{
7378
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,投递数据包失败,大小:%d,错误:%lX"), lpszClientAddr, nMsgLen, Packets_GetLastError());
7479
}
80+
SocketOpt_HeartBeat_ActiveAddrEx(xhHTTPHeart, lpszClientAddr);
7581
}
7682
void CALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
7783
{
@@ -90,6 +96,12 @@ bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart)
9096
NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr);
9197
NetCore_TCPXCore_CloseForClientEx(xhHttpSocket, lpszClientAddr);
9298
}
99+
else
100+
{
101+
SocketOpt_HeartBeat_DeleteAddrEx(xhTCPHeart, lpszClientAddr);
102+
SocketOpt_HeartBeat_DeleteAddrEx(xhWSHeart, lpszClientAddr);
103+
SocketOpt_HeartBeat_DeleteAddrEx(xhHTTPHeart, lpszClientAddr);
104+
}
93105
HelpComponents_Datas_DeleteEx(xhTCPPacket, lpszClientAddr);
94106
RfcComponents_WSPacket_DeleteEx(xhWSPacket, lpszClientAddr);
95107
HttpProtocol_Server_CloseClinetEx(xhHttpPacket, lpszClientAddr);
@@ -174,10 +186,12 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen,
174186
ptszCodecBuffer = NULL;
175187
}
176188
NetCore_TCPXCore_SendEx(xhWSSocket, lpszClientAddr, ptszMsgBuffer, nMsgLen);
189+
SocketOpt_HeartBeat_ActiveAddrEx(xhWSHeart, lpszClientAddr);
177190
}
178191
else if (XENGINE_AUTH_APP_NETTYPE_TCP == nNetType)
179192
{
180193
NetCore_TCPXCore_SendEx(xhTCPSocket, lpszClientAddr, lpszMsgBuffer, nMsgLen);
194+
SocketOpt_HeartBeat_ActiveAddrEx(xhTCPHeart, lpszClientAddr);
181195
}
182196
else
183197
{
@@ -205,6 +219,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen,
205219
ManagePool_Memory_Free(xhMemPool, ptszCodecBuffer);
206220
}
207221
NetCore_TCPXCore_SendEx(xhHttpSocket, lpszClientAddr, ptszMsgBuffer, nSDSize);
222+
SocketOpt_HeartBeat_ActiveAddrEx(xhHTTPHeart, lpszClientAddr);
208223
}
209224
ManagePool_Memory_Free(xhMemPool, ptszMsgBuffer);
210225
return true;

XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -242,13 +242,20 @@ int main(int argc, char** argv)
242242
NetCore_TCPXCore_RegisterCallBackEx(xhTCPSocket, XEngine_Client_TCPAccept, XEngine_Client_TCPRecv, XEngine_Client_TCPClose);
243243
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化TCP验证网络事件成功"));
244244

245-
xhTCPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime, XEngine_Client_TCPHeart);
246-
if (NULL == xhTCPHeart)
245+
if (st_AuthConfig.st_XTime.nTCPTime > 0)
247246
{
248-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化TCP验证心跳服务失败,错误:%lX"), NetCore_GetLastError());
249-
goto XENGINE_EXITAPP;
247+
xhTCPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime, XEngine_Client_TCPHeart);
248+
if (NULL == xhTCPHeart)
249+
{
250+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化TCP验证心跳服务失败,错误:%lX"), NetCore_GetLastError());
251+
goto XENGINE_EXITAPP;
252+
}
253+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化TCP验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime);
254+
}
255+
else
256+
{
257+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到TCP心跳服务没有启用"));
250258
}
251-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化TCP验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime);
252259

253260
BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread, sizeof(THREADPOOL_PARAMENT));
254261
for (int i = 0; i < st_AuthConfig.st_XMax.nTCPThread; i++)
@@ -282,13 +289,20 @@ int main(int argc, char** argv)
282289
NetCore_TCPXCore_RegisterCallBackEx(xhWSSocket, XEngine_Client_WSAccept, XEngine_Client_WSRecv, XEngine_Client_WSClose);
283290
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WEBSOCKET验证网络事件成功"));
284291

285-
xhWSHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime, XEngine_Client_WSHeart);
286-
if (NULL == xhWSHeart)
292+
if (st_AuthConfig.st_XTime.nWSTime > 0)
287293
{
288-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化WEBSOCKET验证心跳服务失败,错误:%lX"), NetCore_GetLastError());
289-
goto XENGINE_EXITAPP;
294+
xhWSHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime, XEngine_Client_WSHeart);
295+
if (NULL == xhWSHeart)
296+
{
297+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化WEBSOCKET验证心跳服务失败,错误:%lX"), NetCore_GetLastError());
298+
goto XENGINE_EXITAPP;
299+
}
300+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WEBSOCKET验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime);
301+
}
302+
else
303+
{
304+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到WEBSOCKET心跳服务没有启用"));
290305
}
291-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WEBSOCKET验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime);
292306

293307
BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread, sizeof(THREADPOOL_PARAMENT));
294308
for (int i = 0; i < st_AuthConfig.st_XMax.nWSThread; i++)
@@ -322,13 +336,20 @@ int main(int argc, char** argv)
322336
NetCore_TCPXCore_RegisterCallBackEx(xhHttpSocket, XEngine_Client_HttpAccept, XEngine_Client_HttpRecv, XEngine_Client_HttpClose);
323337
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化HTTP管理网络事件成功"));
324338

325-
xhHTTPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime, XEngine_Client_HttpHeart);
326-
if (NULL == xhHTTPHeart)
339+
if (st_AuthConfig.st_XTime.nHTTPTime > 0)
327340
{
328-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化HTTP心跳服务失败,错误:%lX"), NetCore_GetLastError());
329-
goto XENGINE_EXITAPP;
341+
xhHTTPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime, XEngine_Client_HttpHeart);
342+
if (NULL == xhHTTPHeart)
343+
{
344+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化HTTP心跳服务失败,错误:%lX"), NetCore_GetLastError());
345+
goto XENGINE_EXITAPP;
346+
}
347+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化HTTP心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime);
348+
}
349+
else
350+
{
351+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到HTTP心跳服务没有启用"));
330352
}
331-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化HTTP心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime);
332353

333354
BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread, sizeof(THREADPOOL_PARAMENT));
334355
for (int i = 0; i < st_AuthConfig.st_XMax.nHTTPThread; i++)

0 commit comments

Comments
 (0)