fix qvvr new funtion

This commit is contained in:
lnk
2025-04-02 15:16:11 +08:00
parent 2ab30dfbc6
commit 633682ae0c
2 changed files with 63 additions and 29 deletions

View File

@@ -11484,18 +11484,19 @@ void OnTimerThread::run()
// <20>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>׷<EFBFBD>ӵ<EFBFBD> *ptr <20><> // <20>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>׷<EFBFBD>ӵ<EFBFBD> *ptr <20><>
size_t req_reply_http(void* contents, size_t size, size_t nmemb, void* userp) { size_t req_reply_http(void* contents, size_t size, size_t nmemb, void* userp) {
size_t realsize = size * nmemb; size_t realsize = size * nmemb;
char** ptr = (char**)userp; char** responsePtr = (char**)userp;
// <20><>̬<EFBFBD><EFBFBD>չ *ptr <EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> size_t oldLen = strlen(*responsePtr); // <20><>ǰ<EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><EFBFBD><EFBFBD>
char* temp = (char*)realloc(*ptr, strlen(*ptr) + realsize + 1); char* temp = (char*)realloc(*responsePtr, oldLen + realsize + 1); // +1 <20><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD> '\0'
if (temp == NULL) { if (temp == NULL) {
printf("Memory allocation failed!\n"); printf("Memory reallocation failed!\n");
return 0; // <20><><EFBFBD><EFBFBD> 0 <20><>֪ͨ curl ֹͣ<CDA3><D6B9><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD> return 0;
} }
*ptr = temp;
// ׷<><D7B7><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD> *ptr *responsePtr = temp;
strncat(*ptr, (char*)contents, realsize); memcpy(*responsePtr + oldLen, contents, realsize); // ֱ<>ӿ<EFBFBD><D3BF><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
(*responsePtr)[oldLen + realsize] = '\0'; // <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return realsize; return realsize;
} }

View File

@@ -4378,8 +4378,11 @@ static void scanAndResendOfflineFiles(const std::string &dirPath)
{ {
// <20><>ȡĿ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ // <20><>ȡĿ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
std::vector<FileInfo> fileList; std::vector<FileInfo> fileList;
std::cout << "getDirectoryFilesInfo" << std::endl;
getDirectoryFilesInfo(dirPath, fileList); getDirectoryFilesInfo(dirPath, fileList);
std::cout << "send every file" << std::endl;
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD> // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>
for (size_t i = 0; i < fileList.size(); ++i) { for (size_t i = 0; i < fileList.size(); ++i) {
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD> JSON) // <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD> JSON)
@@ -4399,24 +4402,46 @@ static void scanAndResendOfflineFiles(const std::string &dirPath)
} }
fclose(fp); fclose(fp);
std::cout << "send jsonContent" << jsonContent << std::endl;
// <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD> // <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>
char* ptr = NULL; // <20><><EFBFBD>շ<EFBFBD><D5B7><EFBFBD> char* ptr = NULL; // <20><><EFBFBD>շ<EFBFBD><D5B7><EFBFBD>
SendJsonAPI_web(0, "", jsonContent.c_str(), &ptr); SendJsonAPI_web(WEB_EVENT, "", jsonContent.c_str(), &ptr);
if (ptr != NULL) { if (ptr != NULL) {
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>Ҫ<EFBFBD>ɼӸ<C9BC><D3B8><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>ж<EFBFBD>
handleCommentResponse(std::string(ptr)); cJSON* j_r = cJSON_Parse(ptr);
free(ptr); if (j_r == NULL) {
// ɾ<><C9BE><EFBFBD>ļ<EFBFBD> std::cout << "old file send fail" << std::endl;
remove(fileList[i].fileName.c_str()); // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>Ҫ<EFBFBD>ɼӸ<C9BC><D3B8><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>ж<EFBFBD>
handleCommentResponse(std::string(ptr));
}
else{
std::cout << "old file send success,remove it" << std::endl;
// ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
remove(fileList[i].fileName.c_str());
free(j_r);
}
} }
else { else {
// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
std::cout << "old file send fail" << std::endl;
} }
free(ptr);
} }
} }
// ***************************************************************************************** // *****************************************************************************************
std::string FormatTimeForFilename(const std::string& timeStr) {
std::string result;
for (char c : timeStr) {
if (isdigit(c)) {
result += c;
}
}
return result;
}
// ======================== ԭ<>ȵĺ<C8B5><C4BA><EFBFBD> ======================== // ======================== ԭ<>ȵĺ<C8B5><C4BA><EFBFBD> ========================
int transfer_json_qvvr_data(unsigned int func_type, int monitor_id, int transfer_json_qvvr_data(unsigned int func_type, int monitor_id,
double mag, double dur, long long start_tm, long long end_tm, int dis_kind, double mag, double dur, long long start_tm, long long end_tm, int dis_kind,
@@ -4484,9 +4509,12 @@ char* mp_id,char* Qvvr_rptname,char* devtype)
// ================ <20><><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD><C2B9><EFBFBD> ========================= // ================ <20><><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD><C2B9><EFBFBD> =========================
// ********** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ʼ ********** // ********** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ʼ **********
if(ptr != NULL)
{ {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>(ptr == NULL)<29><><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>ǰ json <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Ŀ¼(/FeProject/dat/qvvr/) cJSON* j_r = cJSON_Parse(ptr);
if (ptr == NULL) { // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>(j_r == NULL)<29><><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>ǰ json <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Ŀ¼(/FeProject/dat/qvvr/)
if (j_r == NULL) {
std::cout << "qvvr send fail ,store in local" << std::endl;
// 1) <20>ȼ<EFBFBD><C8BC><EFBFBD>/FeProject/dat/qvvr/Ŀ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD>Ƿ񳬹<C7B7> 10M<30><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD> // 1) <20>ȼ<EFBFBD><C8BC><EFBFBD>/FeProject/dat/qvvr/Ŀ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD>Ƿ񳬹<C7B7> 10M<30><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>
std::string qvvrDir = "/FeProject/dat/qvvr/"; std::string qvvrDir = "/FeProject/dat/qvvr/";
checkAndRemoveOldestIfNeeded(qvvrDir, 10LL * 1024 * 1024); checkAndRemoveOldestIfNeeded(qvvrDir, 10LL * 1024 * 1024);
@@ -4496,7 +4524,7 @@ char* mp_id,char* Qvvr_rptname,char* devtype)
std::string fileName = qvvrDir; std::string fileName = qvvrDir;
fileName += mp_id; fileName += mp_id;
fileName += "-"; fileName += "-";
fileName += start_time_str; fileName += FormatTimeForFilename(start_time_str);
fileName += "-"; fileName += "-";
char buf[64]; char buf[64];
@@ -4505,27 +4533,32 @@ char* mp_id,char* Qvvr_rptname,char* devtype)
fileName += ".txt"; fileName += ".txt";
// <20><> json_string д<><D0B4><EFBFBD>ļ<EFBFBD> // <20><> json_string д<><D0B4><EFBFBD>ļ<EFBFBD>
writeJsonToFile(fileName.c_str(), json_string); writeJsonToFile(fileName.c_str(), json_string);
}
// <20><><EFBFBD>۴˴η<CBB4><CEB7>ͳɹ<CDB3><C9B9><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>Ҫɨ<D2AA><C9A8>/FeProject/dat/qvvr/Ŀ¼<C4BF>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>
{
std::string qvvrDir = "/FeProject/dat/qvvr/";
scanAndResendOfflineFiles(qvvrDir);
} }
else{
free(j_r);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
} }
// <20><><EFBFBD>۴˴η<CBB4><CEB7>ͳɹ<CDB3><C9B9><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>Ҫɨ<D2AA><C9A8>/FeProject/dat/qvvr/Ŀ¼<C4BF>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>
if(1)
{
std::string qvvrDir = "/FeProject/dat/qvvr/";
scanAndResendOfflineFiles(qvvrDir);
}
// ********** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD> ********** // ********** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD> **********
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><EFBFBD><EFBFBD>
if (ptr != NULL) { if (ptr != NULL) {
std::cout << "current qvvr handle response" << std::endl;
handleCommentResponse(std::string(ptr)); handleCommentResponse(std::string(ptr));
free(ptr); free(ptr);
} else { } else {
// <20><><EFBFBD><EFBFBD> ptr Ϊ NULL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD> ptr Ϊ NULL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "Error: Received NULL response" << std::endl; std::cout << "Error: Received NULL response" << std::endl;
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD> // <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(root); cJSON_Delete(root);
free(json_string); free(json_string);
return 0; return 0;
} }