44BOOL XEngine_Task_Manage (LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, TCHAR** pptszListHdr, int nHdrCount)
55{
66 int nSDLen = 2048 ;
7+ int nRVLen = 2048 ;
78 TCHAR tszSDBuffer[2048 ];
9+ TCHAR tszRVBuffer[2048 ];
810 RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam;
911
1012 memset (tszSDBuffer, ' \0 ' , sizeof (tszSDBuffer));
13+ memset (tszRVBuffer, ' \0 ' , sizeof (tszRVBuffer));
1114 memset (&st_HDRParam, ' \0 ' , sizeof (RFCCOMPONENTS_HTTP_HDRPARAM));
1215
1316 // 文件存储成功的事件上传
@@ -212,5 +215,72 @@ BOOL XEngine_Task_Manage(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lp
212215 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T (" 业务客户端:%s,请求查询文件列表成功,列表个数:%d" ), lpszClientAddr, nListCount);
213216 }
214217 }
218+ else if (0 == _tcsnicmp (XENGINE_STORAGE_APP_METHOD_DIR, lpszAPIName, _tcslen (XENGINE_STORAGE_APP_METHOD_DIR)))
219+ {
220+ int nOPCode = 0 ;
221+ int nListCount = 0 ;
222+ CHAR** ppszListDir = NULL ;
223+ TCHAR tszUserDir[MAX_PATH];
224+ TCHAR tszRealDir[MAX_PATH];
225+
226+ memset (tszUserDir, ' \0 ' , MAX_PATH);
227+ memset (tszRealDir, ' \0 ' , MAX_PATH);
228+
229+ st_HDRParam.bIsClose = TRUE ;
230+ st_HDRParam.nHttpCode = 200 ;
231+
232+ XStorageProtocol_Core_REQDirOperator (lpszMsgBuffer, tszUserDir, &nOPCode);
233+ _stprintf (tszRealDir, _T (" %s/%s" ), st_ServiceCfg.st_XStorage .tszFileDir , tszUserDir);
234+ if (0 == nOPCode)
235+ {
236+ if (!SystemApi_File_EnumFile (tszRealDir, &ppszListDir, &nListCount, NULL , NULL , TRUE , 2 ))
237+ {
238+ st_HDRParam.bIsClose = TRUE ;
239+ st_HDRParam.nHttpCode = 404 ;
240+
241+ RfcComponents_HttpServer_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
242+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
243+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T (" 业务客户端:%s,请求查询文件夹:%s,失败,错误:%lX" ), lpszClientAddr, tszRealDir, SystemApi_GetLastError ());
244+ return FALSE ;
245+ }
246+ XStorageProtocol_Core_REPDirOperator (tszRVBuffer, &nRVLen, &ppszListDir, nListCount);
247+ BaseLib_OperatorMemory_Free ((XPPPMEM)&ppszListDir, nListCount);
248+ RfcComponents_HttpServer_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen);
249+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
250+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T (" 业务客户端:%s,请求查询文件夹:%s,成功,文件夹个数:%d" ), lpszClientAddr, tszRealDir, nListCount);
251+ }
252+ else if (1 == nOPCode)
253+ {
254+ if (!SystemApi_File_CreateMutilFolder (tszRealDir))
255+ {
256+ st_HDRParam.bIsClose = TRUE ;
257+ st_HDRParam.nHttpCode = 404 ;
258+
259+ RfcComponents_HttpServer_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
260+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
261+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T (" 业务客户端:%s,请求创建文件夹:%s,失败,错误:%lX" ), lpszClientAddr, tszRealDir, SystemApi_GetLastError ());
262+ return FALSE ;
263+ }
264+ RfcComponents_HttpServer_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
265+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
266+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T (" 业务客户端:%s,请求创建文件夹:%s,成功" ), lpszClientAddr, tszRealDir);
267+ }
268+ else if (2 == nOPCode)
269+ {
270+ if (!SystemApi_File_DeleteMutilFolder (tszRealDir))
271+ {
272+ st_HDRParam.bIsClose = TRUE ;
273+ st_HDRParam.nHttpCode = 404 ;
274+
275+ RfcComponents_HttpServer_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
276+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
277+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T (" 业务客户端:%s,请求删除文件夹:%s,失败,错误:%lX" ), lpszClientAddr, tszRealDir, SystemApi_GetLastError ());
278+ return FALSE ;
279+ }
280+ RfcComponents_HttpServer_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
281+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
282+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T (" 业务客户端:%s,请求删除文件夹:%s,成功" ), lpszClientAddr, tszRealDir);
283+ }
284+ }
215285 return TRUE ;
216286}
0 commit comments