@@ -95,6 +95,23 @@ void CALLBACK Network_Callback_ForwardHeart(LPCXSTR lpszClientAddr, XSOCKET hSoc
9595{
9696 XEngine_Network_Close (lpszClientAddr, XENGINE_CLIENT_NETTYPE_FORWARD, XENGINE_CLIENT_CLOSE_HEARTBEAT);
9797}
98+ // ////////////////////////////////////////////////////////////////////////Forward相关
99+ bool CALLBACK Network_Callback_ProxyLogin (LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
100+ {
101+ return XEngine_Proxy_Connect (lpszClientAddr);
102+ }
103+ void CALLBACK Network_Callback_ProxyRecv (LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam)
104+ {
105+ XEngine_Proxy_Recvmsg (lpszClientAddr, lpszRecvMsg, nMsgLen);
106+ }
107+ void CALLBACK Network_Callback_ProxyLeave (LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
108+ {
109+ XEngine_Network_Close (lpszClientAddr, XENGINE_CLIENT_NETTYPE_PROXY, XENGINE_CLIENT_CLOSE_NETWORK);
110+ }
111+ void CALLBACK Network_Callback_ProxyHeart (LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam)
112+ {
113+ XEngine_Network_Close (lpszClientAddr, XENGINE_CLIENT_NETTYPE_PROXY, XENGINE_CLIENT_CLOSE_HEARTBEAT);
114+ }
98115// ////////////////////////////////////////////////////////////////////////网络IO关闭操作
99116void XEngine_Network_Close (LPCXSTR lpszClientAddr, int nIPProto, int nCloseType)
100117{
@@ -182,6 +199,23 @@ void XEngine_Network_Close(LPCXSTR lpszClientAddr, int nIPProto, int nCloseType)
182199 ModuleSession_Forward_Delete (lpszClientAddr);
183200 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" Forward客户端:%s,离开服务器,离开类型;%d" ), lpszClientAddr, nCloseType);
184201 }
202+ else if (XENGINE_CLIENT_NETTYPE_PROXY == nIPProto)
203+ {
204+ if (XENGINE_CLIENT_CLOSE_NETWORK == nCloseType)
205+ {
206+ SocketOpt_HeartBeat_DeleteAddrEx (xhProxyHeart, lpszClientAddr);
207+ }
208+ else if (XENGINE_CLIENT_CLOSE_HEARTBEAT == nCloseType)
209+ {
210+ NetCore_TCPXCore_CloseForClientEx (xhProxySocket, lpszClientAddr);
211+ }
212+ else
213+ {
214+ SocketOpt_HeartBeat_DeleteAddrEx (xhProxyHeart, lpszClientAddr);
215+ NetCore_TCPXCore_CloseForClientEx (xhProxySocket, lpszClientAddr);
216+ }
217+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" Proxy客户端:%s,离开服务器,离开类型;%d" ), lpszClientAddr, nCloseType);
218+ }
185219 else
186220 {
187221 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" 未知客户端:%s,离开服务器" ), lpszClientAddr);
@@ -220,6 +254,15 @@ bool XEngine_Network_Send(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMs
220254 }
221255 SocketOpt_HeartBeat_ActiveAddrEx (xhForwardHeart, lpszClientAddr);
222256 }
257+ else if (XENGINE_CLIENT_NETTYPE_PROXY == nIPProto)
258+ {
259+ if (!NetCore_TCPXCore_SendEx (xhProxySocket, lpszClientAddr, lpszMsgBuffer, nMsgLen, 1 , 1 ))
260+ {
261+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" Proxy客户端:%s,发送数据失败,错误:%lX" ), lpszClientAddr, NetCore_GetLastError ());
262+ return false ;
263+ }
264+ SocketOpt_HeartBeat_ActiveAddrEx (xhProxyHeart, lpszClientAddr);
265+ }
223266 else
224267 {
225268 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" 未知客户端:%s,发送数据给失败,错误:%lX" ), lpszClientAddr, NetCore_GetLastError ());
0 commit comments