Skip to content

Commit e05e3f2

Browse files
committed
download speed rate limit is supported...
upload file is worked now
1 parent 3b839f7 commit e05e3f2

File tree

7 files changed

+79
-55
lines changed

7 files changed

+79
-55
lines changed
Lines changed: 45 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,47 @@
11
{
2-
"tszIPAddr":"127.0.0.1",
3-
"bDeamon":0,
4-
"nCenterPort":5001,
5-
"nStorageDLPort":5002,
6-
"nStorageUPPort":5003,
7-
"XMax":{
8-
"MaxClient":10000,
9-
"MaxQueue":10000,
10-
"IOThread":2,
11-
"CenterThread":2,
12-
"nStorageUPThread":2,
13-
"nStorageDLThread":2
14-
},
15-
"XTime":{
16-
"bHBTime":0,
17-
"nTimeCheck":3,
18-
"nCenterTimeOut":5,
19-
"nStorageTimeOut":5
20-
},
21-
"XLog":{
22-
"MaxSize":1024000,
23-
"MaxCount":10,
24-
"LogLeave":32
25-
},
26-
"XSql":{
27-
"SQLAddr":"127.0.0.1",
28-
"SQLPort":3306,
29-
"SQLUser":"root",
30-
"SQLPass":"123123Ruiyue"
31-
},
32-
"XStorage":{
33-
"nUseMode":1,
34-
"tszHttpAddr":"http://192.168.1.4",
35-
"tszNginAddr":"http://192.168.1.4:5010",
36-
"tszFileDir":"/home/ubuntu/nginx/html"
37-
},
38-
"XVer":{
39-
"StorageVersion":[
40-
"1.0.0.1001 Build20210501"
41-
]
42-
}
2+
"tszIPAddr": "127.0.0.1",
3+
"bDeamon": 0,
4+
"nCenterPort": 5001,
5+
"nStorageDLPort": 5002,
6+
"nStorageUPPort": 5003,
7+
"XMax": {
8+
"MaxClient": 10000,
9+
"MaxQueue": 10000,
10+
"IOThread": 2,
11+
"CenterThread": 2,
12+
"nStorageUPThread": 2,
13+
"nStorageDLThread": 2
14+
},
15+
"XTime": {
16+
"bHBTime": 1,
17+
"nTimeCheck": 3,
18+
"nCenterTimeOut": 5,
19+
"nStorageTimeOut": 5
20+
},
21+
"XLog": {
22+
"MaxSize": 1024000,
23+
"MaxCount": 10,
24+
"LogLeave": 32
25+
},
26+
"XSql": {
27+
"SQLAddr": "127.0.0.1",
28+
"SQLPort": 3306,
29+
"SQLUser": "root",
30+
"SQLPass": "123123aa"
31+
},
32+
"XStorage": {
33+
"nUseMode": 1,
34+
"tszHttpAddr": "http://192.168.1.4",
35+
"tszNginAddr": "http://192.168.1.4:5010",
36+
"tszFileDir": "./XEngine_File"
37+
},
38+
"XLimit": {
39+
"nMaxUPLoad": 0,
40+
"nMaxDNLoad": 102400
41+
},
42+
"XVer": {
43+
"StorageVersion": [
44+
"1.0.0.1001 Build20210501"
45+
]
46+
}
4347
}

XEngine_Release/XEngine_File/.gitignore

Whitespace-only changes.

XEngine_Source/StorageModule_Config/Config_Define.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ typedef struct tag_XEngine_ServerConfig
5656
TCHAR tszNginAddr[MAX_PATH];
5757
TCHAR tszFileDir[MAX_PATH];
5858
}st_XStorage;
59+
struct
60+
{
61+
__int64x nMaxUPLoader;
62+
__int64x nMaxDNLoader;
63+
}st_XLimit;
5964
struct
6065
{
6166
list<tstring> *pStl_ListStorage;

XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,21 @@ BOOL CConfig_Json::Config_Json_File(LPCTSTR lpszConfigFile,XENGINE_SERVERCONFIG
125125
return FALSE;
126126
}
127127
Json::Value st_JsonXStorage = st_JsonRoot["XStorage"];
128-
129128
pSt_ServerConfig->st_XStorage.nUseMode = st_JsonXStorage["nUseMode"].asInt();
130129
_tcscpy(pSt_ServerConfig->st_XStorage.tszHttpAddr, st_JsonXStorage["tszHttpAddr"].asCString());
131130
_tcscpy(pSt_ServerConfig->st_XStorage.tszNginAddr, st_JsonXStorage["tszNginAddr"].asCString());
132131
_tcscpy(pSt_ServerConfig->st_XStorage.tszFileDir, st_JsonXStorage["tszFileDir"].asCString());
133132

133+
if (st_JsonRoot["XLimit"].empty() || (2 != st_JsonRoot["XLimit"].size()))
134+
{
135+
Config_IsErrorOccur = TRUE;
136+
Config_dwErrorCode = ERROR_XENGINE_BLOGIC_CONFIG_JSON_XSTORAGE;
137+
return FALSE;
138+
}
139+
Json::Value st_JsonXLimit = st_JsonRoot["XLimit"];
140+
pSt_ServerConfig->st_XLimit.nMaxDNLoader = st_JsonXLimit["nMaxDNLoad"].asInt64();
141+
pSt_ServerConfig->st_XLimit.nMaxUPLoader = st_JsonXLimit["nMaxUPLoad"].asInt64();
142+
134143
if (st_JsonRoot["XVer"].empty() || (1 != st_JsonRoot["XVer"].size()))
135144
{
136145
Config_IsErrorOccur = TRUE;

XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ XHTHREAD CALLBACK XEngine_Download_SendThread(LPVOID lParam)
6767
}
6868
XEngine_Task_SendDownload(tszClientAddr, tszMsgBuffer, nMsgLen);
6969
}
70-
std::this_thread::sleep_for(std::chrono::milliseconds(10));
70+
int nTimeWait = 10;
71+
Algorithm_Calculation_SleepFlow(&nTimeWait, st_ServiceCfg.st_XLimit.nMaxDNLoader, nListCount, 4096);
72+
std::this_thread::sleep_for(std::chrono::milliseconds(nTimeWait));
7173
}
7274
return 0;
7375
}
@@ -117,6 +119,6 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
117119
BOOL XEngine_Task_SendDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen)
118120
{
119121
XEngine_Net_SendMsg(lpszClientAddr, lpszMsgBuffer, nMsgLen, STORAGE_NETTYPE_HTTPDOWNLOAD);
120-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("下载客户端:%s,正在发送文件数据,大小:%d"), lpszClientAddr, nMsgLen);
122+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _T("下载客户端:%s,正在发送文件数据,大小:%d"), lpszClientAddr, nMsgLen);
121123
return TRUE;
122124
}

XEngine_Source/XEngine_StorageApp/StorageApp_Network.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ BOOL XEngine_Net_CloseClient(LPCTSTR lpszClientAddr, BOOL bHBLeave, BOOL bUP)
6868
SocketOpt_HeartBeat_DeleteAddrEx(xhHBDownload, lpszClientAddr);
6969
SocketOpt_HeartBeat_DeleteAddrEx(xhHBUPLoader, lpszClientAddr);
7070
}
71+
Session_UPStroage_Delete(lpszClientAddr);
7172
Session_DLStroage_Delete(lpszClientAddr);
7273
RfcComponents_HttpServer_CloseClinetEx(xhUPHttp, lpszClientAddr);
7374
RfcComponents_HttpServer_CloseClinetEx(xhDLHttp, lpszClientAddr);

XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,31 @@
33
XHTHREAD CALLBACK XEngine_UPLoader_HTTPThread(LPVOID lParam)
44
{
55
int nThreadPos = *(int*)lParam;
6-
TCHAR tszClientAddr[128];
76
TCHAR tszMsgBuffer[4096];
7+
nThreadPos++;
88

99
while (bIsRun)
1010
{
1111
//等待指定线程事件触发
12-
if (RfcComponents_HttpServer_EventWaitEx(xhUPHttp, nThreadPos + 1))
12+
if (RfcComponents_HttpServer_EventWaitEx(xhUPHttp, nThreadPos))
1313
{
1414
int nListCount = 0;
15-
int nMsgLen = 0;
1615
RFCCOMPONENTS_HTTP_REQPARAM st_HTTPParam;
1716
RFCCOMPONENTS_HTTP_PKTCLIENT** ppSt_PKTClient;
1817

1918
memset(&st_HTTPParam, '\0', sizeof(RFCCOMPONENTS_HTTP_REQPARAM));
20-
memset(tszClientAddr, '\0', sizeof(tszClientAddr));
2119
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
2220
//获取当前队列池中所有触发上传客户端
2321
RfcComponents_HttpServer_GetPoolEx(xhUPHttp, nThreadPos, &ppSt_PKTClient, &nListCount);
2422
for (int i = 0; i < nListCount; i++)
2523
{
26-
for (int j = 0; i < ppSt_PKTClient[i]->nPktCount; j++)
24+
for (int j = 0; j < ppSt_PKTClient[i]->nPktCount; j++)
2725
{
26+
int nMsgLen = 4096;
2827
//获得指定上传客户端触发信息
2928
if (RfcComponents_HttpServer_GetClientEx(xhUPHttp, ppSt_PKTClient[i]->tszClientAddr, tszMsgBuffer, &nMsgLen, &st_HTTPParam))
3029
{
31-
XEngine_Task_HttpUPLoader(ppSt_PKTClient[i]->tszClientAddr, tszClientAddr, nMsgLen, &st_HTTPParam);
30+
XEngine_Task_HttpUPLoader(ppSt_PKTClient[i]->tszClientAddr, tszMsgBuffer, nMsgLen, &st_HTTPParam);
3231
}
3332
}
3433
}
@@ -40,7 +39,6 @@ XHTHREAD CALLBACK XEngine_UPLoader_HTTPThread(LPVOID lParam)
4039
BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam)
4140
{
4241
int nSDLen = 2048;
43-
__int64x ullSize = 0;
4442
TCHAR tszSDBuffer[2048];
4543
TCHAR tszFileDir[512];
4644
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam;
@@ -60,11 +58,12 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
6058
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("上传客户端:%s,发送的方法不支持"), lpszClientAddr);
6159
return FALSE;
6260
}
61+
int nRVMode = 0;
6362
int nRVCount = 0;
6463
int nHDSize = 0;
6564
if (!Session_UPStroage_Exist(lpszClientAddr))
6665
{
67-
RfcComponents_HttpServer_GetRecvModeEx(xhUPHttp, lpszClientAddr, NULL, &nRVCount, &nHDSize);
66+
RfcComponents_HttpServer_GetRecvModeEx(xhUPHttp, lpszClientAddr, &nRVMode, &nRVCount, &nHDSize);
6867

6968
_stprintf(tszFileDir, _T("%s%s"), st_ServiceCfg.st_XStorage.tszFileDir, pSt_HTTPParam->tszHttpUri);
7069
if (!Session_UPStroage_Insert(lpszClientAddr, tszFileDir, nRVCount))
@@ -78,20 +77,24 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
7877
return FALSE;
7978
}
8079
}
80+
if (nMsgLen <= 0)
81+
{
82+
return TRUE;;
83+
}
8184
Session_UPStroage_Write(lpszClientAddr, lpszMsgBuffer, nMsgLen);
82-
RfcComponents_HttpServer_GetRecvModeEx(xhUPHttp, lpszClientAddr, NULL, &nRVCount, &nHDSize);
85+
RfcComponents_HttpServer_GetRecvModeEx(xhUPHttp, lpszClientAddr, &nRVMode, &nRVCount, &nHDSize);
8386
if (nHDSize >= nRVCount)
8487
{
8588
st_HDRParam.nHttpCode = 200;
8689
_stprintf(tszFileDir, _T("%s%s"), st_ServiceCfg.st_XStorage.tszFileDir, pSt_HTTPParam->tszHttpUri);
8790

8891
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
8992
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
90-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("上传客户端:%s,请求上传文件成功,文件名:%s,大小:%llu"), lpszClientAddr, tszFileDir, ullSize);
93+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("上传客户端:%s,请求上传文件成功,文件名:%s,大小:%d"), lpszClientAddr, tszFileDir, nRVCount);
9194
}
9295
else
9396
{
94-
97+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _T("上传客户端:%s,请求上传文件中,文件名:%s,大小:%d"), lpszClientAddr, tszFileDir, nMsgLen);
9598
}
9699

97100
return TRUE;

0 commit comments

Comments
 (0)