add funtion in qvvr offline
This commit is contained in:
@@ -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/"};
|
||||
|
||||
Reference in New Issue
Block a user