Skip to content

Commit 048fe7e

Browse files
committed
modify:query action method and added close action
1 parent f32c16d commit 048fe7e

File tree

4 files changed

+70
-9
lines changed

4 files changed

+70
-9
lines changed

XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ extern XHANDLE xhCenterHttp;
9696

9797
extern XSOCKET hBroadSocket;
9898
extern shared_ptr<std::thread> pSTDThread;
99+
extern shared_ptr<std::thread> pSTDThread_Action;
99100

100101
extern XENGINE_SERVERCONFIG st_ServiceCfg;
101102
extern XENGINE_LBCONFIG st_LoadbalanceCfg;

XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskAction.cpp

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,46 @@
11
#include "../StorageApp_Hdr.h"
22

3-
void CALLBACK Storage_TaskAction_Callback(XHANDLE xhToken, double dlTotal, double dlNow, double ulTotal, double ulNow, ENUM_XCLIENT_APIHELP_FILE_STATUS en_DownHttpStatus, XPVOID lParam)
3+
XHTHREAD Session_Action_Thread()
44
{
5-
5+
while (bIsRun)
6+
{
7+
int nListCount = 0;
8+
XNETHANDLE** ppxhToken;
9+
Session_Action_GetAll(&ppxhToken, &nListCount);
10+
for (int i = 0; i < nListCount; i++)
11+
{
12+
XCLIENT_APIFILE st_TaskInfo = {};
13+
XHANDLE xhAction = Session_Action_GetToken((*ppxhToken)[i]);
14+
15+
if (!APIClient_File_Query(xhAction, &st_TaskInfo))
16+
{
17+
Session_Action_Delete((*ppxhToken)[i]);
18+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("转录动作线程:查询文件传输信息失败,句柄:%lld,错误:%lX"), (*ppxhToken)[i], Session_GetLastError());
19+
continue;
20+
}
21+
XENGINE_ACTIONINFO st_ActionInfo = {};
22+
Session_Action_GetInfo((*ppxhToken)[i], &st_ActionInfo);
23+
if (ENUM_XCLIENT_APIHELP_FILE_STATUS_COMPLETE == st_TaskInfo.en_DownStatus)
24+
{
25+
APIClient_File_Delete(xhAction);
26+
Session_Action_Delete((*ppxhToken)[i]);
27+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("转录动作线程:完成文件转录下载,句柄:%lld,URL:%s,Bucket:%s,FileName:%s"), (*ppxhToken)[i], st_ActionInfo.tszFileUrl, st_ActionInfo.tszBucketStr, st_ActionInfo.tszFileName);
28+
}
29+
else if (ENUM_XCLIENT_APIHELP_FILE_STATUS_DOWNLOADDING == st_TaskInfo.en_DownStatus || ENUM_XCLIENT_APIHELP_FILE_STATUS_INIT == st_TaskInfo.en_DownStatus)
30+
{
31+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("转录动作线程:文件转录进行中,句柄:%lld,URL:%s,Bucket:%s,FileName:%s,大小:%lf,已处理大小:%lf"), (*ppxhToken)[i], st_ActionInfo.tszFileUrl, st_ActionInfo.tszBucketStr, st_ActionInfo.tszFileName, st_TaskInfo.dlTotal, st_TaskInfo.dlNow);
32+
}
33+
else
34+
{
35+
APIClient_File_Delete(xhAction);
36+
Session_Action_Delete((*ppxhToken)[i]);
37+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("转录动作线程:文件转录失败,句柄:%lld,URL:%s,Bucket:%s,FileName:%s,错误:%lX"), (*ppxhToken)[i], st_ActionInfo.tszFileUrl, st_ActionInfo.tszBucketStr, st_ActionInfo.tszFileName, Session_GetLastError());
38+
}
39+
}
40+
BaseLib_OperatorMemory_Free((XPPPMEM)&ppxhToken, nListCount);
41+
std::this_thread::sleep_for(std::chrono::seconds(1));
42+
}
43+
return 0;
644
}
745
bool Storage_TaskAction(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam)
846
{
@@ -36,9 +74,13 @@ bool Storage_TaskAction(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lps
3674
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("业务客户端:%s,处理用户转录动作失败,存储Key解析失败,URL:%s,路径:%s,Bucket:%s"), lpszClientAddr, st_ActionInfo.tszFileUrl, st_ActionInfo.tszFileName, st_ActionInfo.tszBucketStr);
3775
return false;
3876
}
77+
_stprintf(tszFileName, _X("%s/%s"), st_StorageBucket.tszFilePath, st_ActionInfo.tszFileName);
3978
if (0 == _tcsxnicmp(lpszAPIDownload, lpszAPIName, _tcsxlen(lpszAPIDownload)))
4079
{
41-
XHANDLE xhAction = APIClient_File_Create(st_ActionInfo.tszFileName, tszFileName, true, NULL, Storage_TaskAction_Callback);
80+
XNETHANDLE xhToken = 0;
81+
BaseLib_OperatorHandle_Create(&xhToken);
82+
83+
XHANDLE xhAction = APIClient_File_Create(st_ActionInfo.tszFileUrl, tszFileName, true);
4284
if (NULL == xhAction)
4385
{
4486
st_HDRParam.nHttpCode = 501;
@@ -47,9 +89,8 @@ bool Storage_TaskAction(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lps
4789
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("业务客户端:%s,处理用户转录动作失败,下载文件失败,URL:%s,路径:%s,Bucket:%s"), lpszClientAddr, st_ActionInfo.tszFileUrl, tszFileName, st_ActionInfo.tszBucketStr);
4890
return false;
4991
}
92+
APIClient_File_Start(xhAction);
5093
//APIClient_File_SetMaxSpeed(xhAction);
51-
XNETHANDLE xhToken = 0;
52-
BaseLib_OperatorHandle_Create(&xhToken);
5394
Session_Action_Insert(xhToken, xhAction, &st_ActionInfo);
5495
Protocol_StoragePacket_Action(tszRVBuffer, &nRVLen, xhToken, &st_ActionInfo);
5596
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen);
@@ -58,7 +99,10 @@ bool Storage_TaskAction(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lps
5899
}
59100
else if (0 == _tcsxnicmp(lpszAPIUPload, lpszAPIName, _tcsxlen(lpszAPIUPload)))
60101
{
61-
XHANDLE xhAction = APIClient_File_Create(st_ActionInfo.tszFileName, tszFileName, false, NULL, Storage_TaskAction_Callback);
102+
XNETHANDLE xhToken = 0;
103+
BaseLib_OperatorHandle_Create(&xhToken);
104+
105+
XHANDLE xhAction = APIClient_File_Create(st_ActionInfo.tszFileUrl, tszFileName, false);
62106
if (NULL == xhAction)
63107
{
64108
st_HDRParam.nHttpCode = 501;
@@ -67,9 +111,8 @@ bool Storage_TaskAction(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lps
67111
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("业务客户端:%s,处理用户转录动作失败,下载文件失败,URL:%s,路径:%s,Bucket:%s"), lpszClientAddr, st_ActionInfo.tszFileUrl, tszFileName, st_ActionInfo.tszBucketStr);
68112
return false;
69113
}
114+
APIClient_File_Start(xhAction);
70115
//APIClient_File_SetMaxSpeed(xhAction);
71-
XNETHANDLE xhToken = 0;
72-
BaseLib_OperatorHandle_Create(&xhToken);
73116
Session_Action_Insert(xhToken, xhAction, &st_ActionInfo);
74117
Protocol_StoragePacket_Action(tszRVBuffer, &nRVLen, xhToken, &st_ActionInfo);
75118
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#pragma once
22

3-
void CALLBACK Storage_TaskAction_Callback(XHANDLE xhToken, double dlTotal, double dlNow, double ulTotal, double ulNow, ENUM_XCLIENT_APIHELP_FILE_STATUS en_DownHttpStatus, XPVOID lParam);
3+
XHTHREAD Session_Action_Thread();
44
bool Storage_TaskAction(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam);

XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ XHANDLE xhCenterHttp = NULL;
2525

2626
XSOCKET hBroadSocket = 0;
2727
shared_ptr<std::thread> pSTDThread = NULL;
28+
shared_ptr<std::thread> pSTDThread_Action = NULL;
2829

2930
XENGINE_SERVERCONFIG st_ServiceCfg;
3031
XENGINE_LBCONFIG st_LoadbalanceCfg;
@@ -70,6 +71,10 @@ void ServiceApp_Stop(int signo)
7071
NetCore_BroadCast_Close(hBroadSocket);
7172
pSTDThread->join();
7273
}
74+
if (NULL != pSTDThread_Action)
75+
{
76+
pSTDThread_Action->join();
77+
}
7378
exit(0);
7479
}
7580
}
@@ -443,6 +448,14 @@ int main(int argc, char** argv)
443448
{
444449
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,P2P存储服务配置为不启动"));
445450
}
451+
452+
pSTDThread_Action = make_shared<std::thread>(Session_Action_Thread);
453+
if (!pSTDThread_Action->joinable())
454+
{
455+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动转录动作处理线程失败,错误:%d"), errno);
456+
goto XENGINE_EXITAPP;
457+
}
458+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动转录动作处理线程成功"));
446459
//发送信息报告
447460
if (st_ServiceCfg.st_XReport.bEnable)
448461
{
@@ -510,6 +523,10 @@ int main(int argc, char** argv)
510523
NetCore_BroadCast_Close(hBroadSocket);
511524
pSTDThread->join();
512525
}
526+
if (NULL != pSTDThread_Action)
527+
{
528+
pSTDThread_Action->join();
529+
}
513530
}
514531
#ifdef _MSC_BUILD
515532
WSACleanup();

0 commit comments

Comments
 (0)