Skip to content

Commit 1d4169b

Browse files
committed
added:get file size thought head method for http center
1 parent a7b4bbd commit 1d4169b

2 files changed

Lines changed: 31 additions & 8 deletions

File tree

XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,14 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
5252

5353
LPCXSTR lpszMethodPost = _X("POST");
5454
LPCXSTR lpszMethodGet = _X("GET");
55+
LPCXSTR lpszMethodHead = _X("HEAD");
5556

5657
XCHAR** pptszUrlList;
5758
XCHAR tszUrlName[128];
5859
int nUrlCount = 0;
5960
//得到URL参数个数
6061
HttpProtocol_ServerHelp_GetParament(pSt_HTTPParam->tszHttpUri, &pptszUrlList, &nUrlCount, tszUrlName);
61-
if (nUrlCount < 1)
62+
if (nUrlCount < 1 && (0 != _tcsxncmp(lpszMethodHead, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodHead))))
6263
{
6364
st_HDRParam.nHttpCode = 400;
6465
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
@@ -207,6 +208,32 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
207208
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("业务客户端:%s,请求GET心跳方法成功"), lpszClientAddr);
208209
}
209210
}
211+
else if (0 == _tcsxncmp(lpszMethodHead, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodHead)))
212+
{
213+
//获得文件大小
214+
XCHAR tszFileExt[64] = {};
215+
XCHAR tszFileHdr[XPATH_MIN] = {};
216+
XCHAR tszFilePath[XPATH_MAX] = {};
217+
SYSTEMAPI_FILE_ATTR st_FileAttr = {};
218+
219+
_xstprintf(tszFilePath, _X(".%s"), pSt_HTTPParam->tszHttpUri);
220+
if (0 != _xtaccess(tszFilePath, 0))
221+
{
222+
st_HDRParam.nHttpCode = 404;
223+
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_NOTFOUND, "file not found");
224+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen);
225+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
226+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("业务客户端:%s,请求文件大小失败,文件:%s 不存在"), lpszClientAddr, pSt_HTTPParam->tszHttpUri);
227+
return false;
228+
}
229+
SystemApi_File_GetFileAttr(tszFilePath, &st_FileAttr);
230+
BaseLib_String_GetFileAndPath(tszFilePath, NULL, NULL, NULL, tszFileExt);
231+
_xstprintf(tszFileHdr, _X("Content-Length: %lld\r\n"), st_FileAttr.nFileSize);
232+
233+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszFileHdr);
234+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
235+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("业务客户端:%s,请求获取文件:%s 大小:%lld 成功"), lpszClientAddr, tszFilePath, st_FileAttr.nFileSize);
236+
}
210237
else
211238
{
212239
st_HDRParam.bIsClose = true;

XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ bool XEngine_Task_Manage(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lp
44
{
55
int nSDLen = 10240;
66
int nRVLen = 10240;
7-
XCHAR tszSDBuffer[10240];
8-
XCHAR tszRVBuffer[10240];
7+
XCHAR tszSDBuffer[10240] = {};
8+
XCHAR tszRVBuffer[10240] = {};
99
LPCXSTR lpszAPIConfig = _X("Config");
1010
LPCXSTR lpszAPIInsert = _X("Insert");
1111
LPCXSTR lpszAPIDelete = _X("Delete");
@@ -14,11 +14,7 @@ bool XEngine_Task_Manage(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lp
1414
LPCXSTR lpszAPIBucket = _X("Bucket");
1515
LPCXSTR lpszAPITask = _X("Task");
1616
LPCXSTR lpszAPIFlushSize = _X("flushsize");
17-
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam;
18-
19-
memset(tszSDBuffer, '\0', sizeof(tszSDBuffer));
20-
memset(tszRVBuffer, '\0', sizeof(tszRVBuffer));
21-
memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM));
17+
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {};
2218

2319
st_HDRParam.bIsClose = true;
2420
st_HDRParam.nHttpCode = 200;

0 commit comments

Comments
 (0)