add funtion in qvvr offline

This commit is contained in:
lnk
2025-04-02 11:48:18 +08:00
parent 07015b523e
commit 2ab30dfbc6

View File

@@ -4252,6 +4252,290 @@ QString errorlog_datamatch_pgsql(QString id, QString time, int BASE_MAT_NUM,int
}
#endif
//lnk202411-5 <20><>̬<EFBFBD><CCAC><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>ʹ<EFBFBD><CAB9>kafka<6B><61><EFBFBD>ͣ<EFBFBD><CDA3>ij<EFBFBD>http<74>ӿ<EFBFBD>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<2F><>̬<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// *****************************************************************************************
// <20><>ȡָ<C8A1><D6B8>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϣ(<28>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A1A2>С)<29><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>ܴ<EFBFBD>С
struct FileInfo {
std::string fileName;
time_t modTime; // <20>ϴ<EFBFBD><CFB4>޸<EFBFBD>ʱ<EFBFBD><CAB1>
long long fileSize; // <20>ļ<EFBFBD><C4BC><EFBFBD>С
};
// ɨ<><C9A8>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϣ
static void getDirectoryFilesInfo(const std::string &dirPath, std::vector<FileInfo> &fileList)
{
DIR* dp = opendir(dirPath.c_str());
if (!dp) {
std::cerr << "Failed to get info from : " << dirPath << std::endl;
return; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
}
struct dirent* entry = NULL;
while ((entry = readdir(dp)) != NULL) {
// <20><><EFBFBD><EFBFBD> . <20><> ..
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
// ƴ<><C6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
std::string fullPath = dirPath + entry->d_name;
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
struct stat st;
if (stat(fullPath.c_str(), &st) == 0) {
if (S_ISREG(st.st_mode)) {
FileInfo fi;
fi.fileName = fullPath; // <20><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
fi.modTime = st.st_mtime; // <20>޸<EFBFBD>ʱ<EFBFBD><CAB1>
fi.fileSize = (long long)st.st_size; // <20>ļ<EFBFBD><C4BC><EFBFBD>С
fileList.push_back(fi);
}
}
}
closedir(dp);
}
// <20><> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>д<EFBFBD><D0B4>ָ<EFBFBD><D6B8><EFBFBD>ļ<EFBFBD>
// ע<><D7A2><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ŀ<EFBFBD>пɼӸ<C9BC><D3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void writeJsonToFile(const char* filePath, const char* jsonString)
{
FILE* fp = fopen(filePath, "w");
if (!fp) {
std::cerr << "Failed to write in file : " << filePath << std::endl;
return;
}
fprintf(fp, "%s", jsonString);
fclose(fp);
}
// <20><><EFBFBD><EFBFBD> qvvr Ŀ¼<C4BF><C2BC><EFBFBD>ļ<EFBFBD><C4BC>ܴ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10M <20><>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>
// ע<><EFBFBD><E2A3BA><EFBFBD>߼<EFBFBD><DFBC>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻɾһ<C9BE><D2BB><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ɾ<EFBFBD><C9BE>С<EFBFBD><D0A1>10M
static void checkAndRemoveOldestIfNeeded(const std::string &dirPath, long long maxBytes)
{
// 1) <20>ж<EFBFBD>Ŀ¼<C4BF>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
{
struct stat st;
// <20><><EFBFBD><EFBFBD> stat() <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (stat(dirPath.c_str(), &st) == -1) {
if (errno == ENOENT) {
// Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
// ע<>⣺mkdir ֻ<><EFBFBD><E1B4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ݹ鴴<DDB9><E9B4B4><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ
if (mkdir(dirPath.c_str(), 0777) != 0) {
// <20><> mkdir ʧ<>ܣ<EFBFBD><DCA3>ɸ<EFBFBD><C9B8><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cerr << "Failed to create directory: " << dirPath << std::endl;
return; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
} else {
// stat() <20><><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ENOENT<4E><54><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cerr << "stat error: " << strerror(errno) << std::endl;
return;
}
}
else {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> stat <20><> dirPath<74><68><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ļ<EFBFBD>
if (!S_ISDIR(st.st_mode)) {
// <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ķ<EFBFBD>Ŀ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD>ΪĿ¼ʹ<C2BC><CAB9>
std::cerr << dirPath << " exists but is not a directory." << std::endl;
return;
}
}
}
// ============== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD><D0B5>߼<EFBFBD> ==============
// <20><>ȡĿ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
std::vector<FileInfo> fileList;
getDirectoryFilesInfo(dirPath, fileList);
// <20><><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD>С
long long totalSize = 0;
for (size_t i = 0; i < fileList.size(); ++i) {
totalSize += fileList[i].fileSize;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Ǹ<EFBFBD>
if (totalSize > maxBytes && !fileList.empty()) {
// <20><><EFBFBD>޸<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>޸<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>
std::sort(fileList.begin(), fileList.end(),
// C++98 <20>ıȽ<C4B1>д<EFBFBD><D0B4>
static_cast<bool(*)(const FileInfo&, const FileInfo&)>(
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>lambda<64><61><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ָ<EFBFBD><D6B8>
// <20>ȽϺ<C8BD><CFBA><EFBFBD>
(bool (*)(const FileInfo&, const FileInfo&))[] (const FileInfo &a, const FileInfo &b) {
return a.modTime < b.modTime;
}
)
);
// ɾ<><C9BE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>(<28><><EFBFBD>ϵ<EFBFBD><CFB5>ļ<EFBFBD>)
remove(fileList[0].fileName.c_str());
}
}
// ɨ<><C9A8>Ŀ¼<C4BF>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳɹ<CDB3><C9B9><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void scanAndResendOfflineFiles(const std::string &dirPath)
{
// <20><>ȡĿ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
std::vector<FileInfo> fileList;
getDirectoryFilesInfo(dirPath, fileList);
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>
for (size_t i = 0; i < fileList.size(); ++i) {
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD> JSON)
FILE* fp = fopen(fileList[i].fileName.c_str(), "r");
if (!fp) {
std::cerr << " fail to open exsist file " << fileList[i].fileName << std::endl;
continue;
}
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڴ<EFBFBD>
std::string jsonContent;
char buf[1024];
while (!feof(fp)) {
if (fgets(buf, sizeof(buf), fp)) {
jsonContent += buf;
}
}
fclose(fp);
// <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>
char* ptr = NULL; // <20><><EFBFBD>շ<EFBFBD><D5B7><EFBFBD>
SendJsonAPI_web(0, "", jsonContent.c_str(), &ptr);
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));
free(ptr);
// ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
remove(fileList[i].fileName.c_str());
}
else {
// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
}
}
}
// *****************************************************************************************
// ======================== ԭ<>ȵĺ<C8B5><C4BA><EFBFBD> ========================
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,
char* uuid_cfg,char* uuid_dat,
char* mp_id,char* Qvvr_rptname,char* devtype)
{
// ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κθĶ<CEB8>
// ---------------------------------------------------------------
XmlConfig c_xmlcfg;
if (xmlinfo_list.contains(devtype)) {
c_xmlcfg = xmlinfo_list[devtype]->xmlcfg;//<2F><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
}
else {
c_xmlcfg = xmlcfg;
}
if (strlen(mp_id) == 0) {
std::cout << "mp_id is null" << std::endl;
return 0;
}
cJSON* root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "monitorId", mp_id);
cJSON_AddNumberToObject(root, "amplitude", mag);
cJSON_AddNumberToObject(root, "duration", dur);
cJSON_AddNumberToObject(root, "eventType", dis_kind);
char start_time_str[25];
time_t start_sec = start_tm / 1000;
struct tm* time_info = localtime(&start_sec);
strftime(start_time_str, sizeof(start_time_str), "%Y-%m-%d %H:%M:%S", time_info);
snprintf(start_time_str + strlen(start_time_str), sizeof(start_time_str) - strlen(start_time_str), ".%03lld", start_tm % 1000);
cJSON_AddStringToObject(root, "startTime", start_time_str);
// cJSON_AddStringToObject(root, "wavePathcfg", uuid_cfg);
// cJSON_AddStringToObject(root, "wavePathdat", uuid_dat);
cJSON_AddStringToObject(root, "wavePath", uuid_dat);
if (c_xmlcfg.WavePhasicFlag == "1") {
QString Qvvr_Rptname;
Qvvr_Rptname.append(Qvvr_rptname);
if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicA) != -1) {
cJSON_AddStringToObject(root, "phase", "A");
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicB) != -1) {
cJSON_AddStringToObject(root, "phase", "B");
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicC) != -1) {
cJSON_AddStringToObject(root, "phase", "C");
}
else {
cJSON_AddStringToObject(root, "phase", "unknow");
}
}
else {
cJSON_AddStringToObject(root, "phase", "unknow");
}
char* json_string = cJSON_Print(root);
printf("%s\n", json_string); // <20><><EFBFBD><EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>
// <20><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>̬<EFBFBD>ӿ<EFBFBD>
char* ptr = NULL;
SendJsonAPI_web(WEB_EVENT, "", json_string, &ptr);
// ================ <20><><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD><C2B9><EFBFBD> =========================
// ********** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ʼ **********
{
// <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/)
if (ptr == NULL) {
// 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/";
checkAndRemoveOldestIfNeeded(qvvrDir, 10LL * 1024 * 1024);
// 2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> json <20><>Ϊ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>: mp_id-start_time_str-dis_kind.txt
// <20><><EFBFBD>磺 502-2025-04-02 15:25:30.123-3.txt (<28><>ʾ<EFBFBD><CABE>)
std::string fileName = qvvrDir;
fileName += mp_id;
fileName += "-";
fileName += start_time_str;
fileName += "-";
char buf[64];
sprintf(buf, "%d", dis_kind);
fileName += buf;
fileName += ".txt";
// <20><> json_string д<><D0B4><EFBFBD>ļ<EFBFBD>
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);
}
}
// ********** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD> **********
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (ptr != NULL) {
handleCommentResponse(std::string(ptr));
free(ptr);
} 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>
std::cout << "Error: Received NULL response" << std::endl;
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(root);
free(json_string);
return 0;
}
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(root);
free(json_string);
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<2F><>̬<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
#if 0
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, //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC>ʼʱ<CABC><EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
char* uuid_cfg,char* uuid_dat, //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD>
@@ -4398,7 +4682,7 @@ char* mp_id,char* Qvvr_rptname,char* devtype) //
return 1;
}
#endif
void qvvr_test()
{
char uuid_cfg[] = {"/comtrade/"};