Skip to content

Commit 1649d2c

Browse files
committed
delete:send threadpool code
modify:enable recv limit speed
1 parent 40d505f commit 1649d2c

File tree

5 files changed

+6
-88
lines changed

5 files changed

+6
-88
lines changed

XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp

Lines changed: 3 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ XHTHREAD CALLBACK XEngine_Download_HTTPThread(LPVOID lParam)
4444

4545
void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
4646
{
47-
int nTimeWait = 0;
4847
int nThreadPos = 0; //回调模式不需要发送线程池
4948
int nMsgLen = 4096;
49+
__int64u nTimeWait = 0;
5050
TCHAR tszMsgBuffer[4096];
5151
list<string> stl_ListClient;
5252

@@ -95,65 +95,8 @@ void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPV
9595
Session_DLStroage_GetCount(nThreadPos, &stl_ListClient);
9696
Algorithm_Calculation_SleepFlow(&nTimeWait, st_ServiceCfg.st_XLimit.nMaxDNLoader, stl_ListClient.size(), 4096);
9797
stl_ListClient.clear();
98-
std::this_thread::sleep_for(std::chrono::microseconds(nTimeWait));
99-
}
100-
101-
XHTHREAD CALLBACK XEngine_Download_SendThread(LPVOID lParam)
102-
{
103-
int nThreadPos = *(int*)lParam;
104-
TCHAR tszMsgBuffer[4096];
105-
106-
while (bIsRun)
107-
{
108-
list<string> stl_ListClient;
109-
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
110-
111-
Session_DLStroage_GetCount(nThreadPos, &stl_ListClient);
112-
list<string>::const_iterator stl_ListIterator = stl_ListClient.begin();
113-
for (; stl_ListIterator != stl_ListClient.end(); stl_ListIterator++)
114-
{
115-
int nMsgLen = 4096;
116-
if (!Session_DLStroage_GetBuffer(nThreadPos, stl_ListIterator->c_str(), tszMsgBuffer, &nMsgLen))
117-
{
118-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("下载客户端:%s,获取用户对应文件内容失败,错误:%lX"), stl_ListIterator->c_str(), Session_GetLastError());
119-
continue;
120-
}
121-
if (nMsgLen <= 0)
122-
{
123-
if (st_ServiceCfg.st_XProxy.st_XProxyPass.bDLPass)
124-
{
125-
int nPLen = MAX_PATH;
126-
int nHttpCode = 0;
127-
UCHAR tszHashKey[MAX_PATH];
128-
TCHAR tszHashStr[MAX_PATH];
129-
TCHAR tszProxyStr[MAX_PATH];
130-
SESSION_STORAGEINFO st_StorageInfo;
131-
132-
memset(tszHashKey, '\0', MAX_PATH);
133-
memset(tszHashStr, '\0', MAX_PATH);
134-
memset(tszProxyStr, '\0', MAX_PATH);
135-
memset(&st_StorageInfo, '\0', sizeof(SESSION_STORAGEINFO));
136-
137-
OPenSsl_Api_Digest(st_StorageInfo.tszFileDir, tszHashKey, NULL, TRUE, st_ServiceCfg.st_XStorage.nHashMode);
138-
BaseLib_OperatorString_StrToHex((char*)tszHashKey, 20, tszHashStr);
139-
Session_DLStroage_GetInfo(nThreadPos, stl_ListIterator->c_str(), &st_StorageInfo);
140-
141-
XStorageProtocol_Proxy_PacketUPDown(st_StorageInfo.tszFileDir, st_StorageInfo.tszClientAddr, st_StorageInfo.ullRWCount, tszProxyStr, &nPLen, tszHashStr);
142-
APIHelp_HttpRequest_Post(st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass, tszProxyStr, &nHttpCode);
143-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_NOTICE, _T("下载客户端:%s,请求完成通知返回值:%d,文件:%s,地址:%s"), stl_ListIterator->c_str(), nHttpCode, st_StorageInfo.tszFileDir, st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass);
144-
}
145-
Session_DLStroage_Delete(stl_ListIterator->c_str());
146-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_NOTICE, _T("下载客户端:%s,文件已经发送完毕,用户已经被移除发送列表"), stl_ListIterator->c_str());
147-
continue;
148-
}
149-
XEngine_Task_SendDownload(stl_ListIterator->c_str(), tszMsgBuffer, nMsgLen);
150-
}
151-
int nTimeWait = 1;
152-
Algorithm_Calculation_SleepFlow(&nTimeWait, st_ServiceCfg.st_XLimit.nMaxDNLoader, stl_ListClient.size(), 4096);
153-
stl_ListClient.clear();
154-
std::this_thread::sleep_for(std::chrono::microseconds(nTimeWait));
155-
}
156-
return 0;
98+
//计算机每次休眠时间是不一定的,*2作为修正,如果想要更准确的需要使用到 Algorithm_Calculation_Create来处理
99+
std::this_thread::sleep_for(std::chrono::microseconds(nTimeWait * 2));
157100
}
158101

159102
BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, TCHAR** pptszListHdr, int nHdrCount)

XEngine_Source/XEngine_StorageApp/StorageApp_Download.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#pragma once
22

33
XHTHREAD CALLBACK XEngine_Download_HTTPThread(LPVOID lParam);
4-
XHTHREAD CALLBACK XEngine_Download_SendThread(LPVOID lParam);
54
void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
65

76
BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, TCHAR** pptszListHdr, int nHdrCount);

XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ extern XNETHANDLE xhNetP2xp;
9494

9595
extern XNETHANDLE xhUPPool;
9696
extern XNETHANDLE xhDLPool;
97-
extern XNETHANDLE xhSDPool;
9897
extern XNETHANDLE xhCTPool;
9998
extern XNETHANDLE xhP2XPPool;
10099

XEngine_Source/XEngine_StorageApp/StorageApp_Network.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,11 @@ void CALLBACK XEngine_Callback_UPLoaderRecv(LPCTSTR lpszClientAddr, SOCKET hSock
3939
}
4040
SocketOpt_HeartBeat_ActiveAddrEx(xhHBUPLoader, lpszClientAddr);
4141

42-
#ifdef _DEBUG
43-
int nTimeWait = 0;
4442
int nCount = 0;
43+
__int64u nTimeWait = 0;
4544
Session_UPStorage_GetAll(NULL, &nCount);
4645
Algorithm_Calculation_SleepFlow(&nTimeWait, st_ServiceCfg.st_XLimit.nMaxUPLoader, nCount, nMsgLen);
47-
std::this_thread::sleep_for(std::chrono::microseconds(nTimeWait));
48-
#endif
46+
std::this_thread::sleep_for(std::chrono::microseconds(nTimeWait * 2));
4947
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _T("上传客户端:%s,投递包成功,大小:%d"), lpszClientAddr, nMsgLen);
5048
}
5149
void CALLBACK XEngine_Callback_UPLoaderLeave(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
@@ -147,7 +145,7 @@ BOOL XEngine_Net_CloseClient(LPCTSTR lpszClientAddr, int nLeaveType, int nClient
147145
}
148146
else if (STORAGE_LEAVETYPE_BYSELF == nLeaveType)
149147
{
150-
lpszLeaveMsg = _T("主动断开");
148+
lpszLeaveMsg = _T("被动断开");
151149
SocketOpt_HeartBeat_DeleteAddrEx(xhHBDownload, lpszClientAddr);
152150
SocketOpt_HeartBeat_DeleteAddrEx(xhHBUPLoader, lpszClientAddr);
153151
SocketOpt_HeartBeat_DeleteAddrEx(xhHBCenter, lpszClientAddr);

XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ XNETHANDLE xhNetP2xp = 0;
1515

1616
XNETHANDLE xhUPPool = 0;
1717
XNETHANDLE xhDLPool = 0;
18-
XNETHANDLE xhSDPool = 0;
1918
XNETHANDLE xhCTPool = 0;
2019
XNETHANDLE xhP2XPPool = 0;
2120

@@ -54,7 +53,6 @@ void ServiceApp_Stop(int signo)
5453

5554
ManagePool_Thread_NQDestroy(xhUPPool);
5655
ManagePool_Thread_NQDestroy(xhDLPool);
57-
ManagePool_Thread_NQDestroy(xhSDPool);
5856
ManagePool_Thread_NQDestroy(xhCTPool);
5957
ManagePool_Thread_NQDestroy(xhP2XPPool);
6058

@@ -121,7 +119,6 @@ int main(int argc, char** argv)
121119
HELPCOMPONENTS_XLOG_CONFIGURE st_XLogConfig;
122120
THREADPOOL_PARAMENT** ppSt_ListUPThread;
123121
THREADPOOL_PARAMENT** ppSt_ListDLThread;
124-
THREADPOOL_PARAMENT** ppSt_ListSDThread;
125122
THREADPOOL_PARAMENT** ppSt_ListCTThread;
126123
THREADPOOL_PARAMENT** ppSt_ListP2xpThread;
127124

@@ -318,7 +315,6 @@ int main(int argc, char** argv)
318315
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,注册P2XP网络服务事件成功!"));
319316

320317
BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListDLThread, st_ServiceCfg.st_XMax.nStorageDLThread, sizeof(THREADPOOL_PARAMENT));
321-
BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListSDThread, st_ServiceCfg.st_XMax.nStorageDLThread, sizeof(THREADPOOL_PARAMENT));
322318
BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListUPThread, st_ServiceCfg.st_XMax.nStorageUPThread, sizeof(THREADPOOL_PARAMENT));
323319
BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListCTThread, st_ServiceCfg.st_XMax.nCenterThread, sizeof(THREADPOOL_PARAMENT));
324320
BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListP2xpThread, st_ServiceCfg.st_XMax.nP2XPThread, sizeof(THREADPOOL_PARAMENT));
@@ -329,29 +325,13 @@ int main(int argc, char** argv)
329325

330326
ppSt_ListDLThread[i]->lParam = pInt_Pos;
331327
ppSt_ListDLThread[i]->fpCall_ThreadsTask = XEngine_Download_HTTPThread;
332-
333-
ppSt_ListSDThread[i]->lParam = pInt_Pos;
334-
ppSt_ListSDThread[i]->fpCall_ThreadsTask = XEngine_Download_SendThread;
335328
}
336329
if (!ManagePool_Thread_NQCreate(&xhDLPool, &ppSt_ListDLThread, st_ServiceCfg.st_XMax.nStorageDLThread))
337330
{
338331
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动HTTP下载处理线程池失败,错误:%d"), errno);
339332
goto XENGINE_EXITAPP;
340333
}
341334
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动HTTP下载任务处理线程池成功,线程池个数:%d"), st_ServiceCfg.st_XMax.nStorageDLThread);
342-
if (1 == st_ServiceCfg.st_XStorage.nSendMode)
343-
{
344-
if (!ManagePool_Thread_NQCreate(&xhSDPool, &ppSt_ListSDThread, st_ServiceCfg.st_XMax.nStorageDLThread))
345-
{
346-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动下载任务线程池失败,错误:%d"), errno);
347-
goto XENGINE_EXITAPP;
348-
}
349-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动下载任务线程池成功,线程池个数:%d"), st_ServiceCfg.st_XMax.nStorageDLThread);
350-
}
351-
else
352-
{
353-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,使用发送回调模式处理下载"));
354-
}
355335

356336
for (int i = 0; i < st_ServiceCfg.st_XMax.nStorageUPThread; i++)
357337
{
@@ -451,7 +431,6 @@ int main(int argc, char** argv)
451431

452432
ManagePool_Thread_NQDestroy(xhUPPool);
453433
ManagePool_Thread_NQDestroy(xhDLPool);
454-
ManagePool_Thread_NQDestroy(xhSDPool);
455434
ManagePool_Thread_NQDestroy(xhCTPool);
456435
ManagePool_Thread_NQDestroy(xhP2XPPool);
457436

0 commit comments

Comments
 (0)