modify for ledgerupdate

This commit is contained in:
lnk
2025-02-08 17:04:39 +08:00
parent 7549ec48bb
commit 3a37ce9c5b
4 changed files with 223 additions and 30 deletions

View File

@@ -130,13 +130,13 @@ RocketMQConsumer::RocketMQConsumer(const std::string& consumerName, const std::s
std::cout << "error setting groupId"<< std::endl; std::cout << "error setting groupId"<< std::endl;
throw std::runtime_error("Failed to set Consumer Group ID."); throw std::runtime_error("Failed to set Consumer Group ID.");
} }
/*
// 设置消费模式为广播模式 // 设置消费模式为广播模式
if (SetPushConsumerMessageModel(consumer_, BROADCASTING) != 0) { if (SetPushConsumerMessageModel(consumer_, BROADCASTING) != 0) {
DestroyPushConsumer(consumer_); DestroyPushConsumer(consumer_);
std::cout << "error setting messagemodel"<< std::endl; std::cout << "error setting messagemodel"<< std::endl;
} }
*/
//调试用 //调试用
std::string consumerlog = "./mqconsumer/" + consumerName +".log"; std::string consumerlog = "./mqconsumer/" + consumerName +".log";
if ( (SetPushConsumerLogPath(consumer_,consumerlog.c_str()) || SetPushConsumerLogFileNumAndSize(consumer_,10,100) || SetPushConsumerLogLevel(consumer_,E_LOG_LEVEL_DEBUG) ) != 0) {//记录消费日志 if ( (SetPushConsumerLogPath(consumer_,consumerlog.c_str()) || SetPushConsumerLogFileNumAndSize(consumer_,10,100) || SetPushConsumerLogLevel(consumer_,E_LOG_LEVEL_DEBUG) ) != 0) {//记录消费日志

View File

@@ -3872,13 +3872,18 @@ int parse_rpt_log_ini()
for (cpuno = 0; cpuno < ied->cpucount; cpuno++) { for (cpuno = 0; cpuno < ied->cpucount; cpuno++) {
LD_info = &(ied_usr->LD_info[cpuno]); LD_info = &(ied_usr->LD_info[cpuno]);
char str[256]; char str[256]; //256<35><36>С
char* tmp = Get_IED(ied_usr->dev_type); char* tmp = Get_IED(ied_usr->dev_type);
qDebug() << tmp << endl; qDebug() << tmp << endl;
apr_snprintf(str, sizeof(str), tmp, cpuno + 1); apr_snprintf(str, sizeof(str), tmp, cpuno + 1);
ied_usr->LD_info[cpuno].LD_name = apr_pstrdup(g_init_pool, str);//domin //lnk20250208<30><38>ʹ<EFBFBD><CAB9>apr_pstrdup<75><70>ʹ<EFBFBD>ù̶<C3B9><CCB6><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD>
//ied_usr->LD_info[cpuno].LD_name = apr_pstrdup(g_init_pool, str);//domin
// <20><> g_init_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>̶<EFBFBD> 256 <20>ֽڵ<D6BD><DAB5>ڴ<EFBFBD>
ied_usr->LD_info[cpuno].LD_name = (char *)apr_palloc(g_init_pool, 256);
// <20><> str <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>Ƶ<EFBFBD>Ԥ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><E0B8B4> 256 <20>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
apr_cpystrn(ied_usr->LD_info[cpuno].LD_name, str, 256);
delete[] tmp; delete[] tmp;
@@ -12437,7 +12442,7 @@ int parse_device_cfg_web()
//ied = find_ied_from_dev_code(line_info.terminal_code); //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC>ն<EFBFBD><D5B6>ˣ<EFBFBD><CBA3>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD> //ied = find_ied_from_dev_code(line_info.terminal_code); //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC>ն<EFBFBD><D5B6>ˣ<EFBFBD><CBA3>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>
if (ied && ied->usr_ext && line_info.cpuno && (static_cast<int>(line_info.cpuno) < 10)) { if (ied && ied->usr_ext && line_info.cpuno && (static_cast<int>(line_info.cpuno) < 10)) {
char str[256]; char str[256]; //256<35><36>С
byte_t cpuno = line_info.cpuno; byte_t cpuno = line_info.cpuno;
cout << "cpuno:" << line_info.cpuno << endl; cout << "cpuno:" << line_info.cpuno << endl;
@@ -12447,7 +12452,14 @@ int parse_device_cfg_web()
ied_usr->LD_info[cpuno - 1] = line_info; //cpunoĬ<6F><C4AC><EFBFBD><EFBFBD>1 ied_usr->LD_info[cpuno - 1] = line_info; //cpunoĬ<6F><C4AC><EFBFBD><EFBFBD>1
ied_usr->LD_info[cpuno - 1].ied = ied; ied_usr->LD_info[cpuno - 1].ied = ied;
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>תΪPQMonitorPQM+<2B>߼<EFBFBD><DFBC><EFBFBD> apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>תΪPQMonitorPQM+<2B>߼<EFBFBD><DFBC><EFBFBD>
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);//<2F><> str <20>еĸ<D0B5>ʽ<EFBFBD><CABD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ڴ<EFBFBD><DAB4><EFBFBD> g_init_pool <20>С<EFBFBD>ied_usr->LD_info[cpuno - 1].LD_name <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>LD_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PQMonitorPQM{cpuno} <20><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>
//lnk20250208<30><38>ʹ<EFBFBD><CAB9>apr_pstrdup<75><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD>
//ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);//<2F><> str <20>еĸ<D0B5>ʽ<EFBFBD><CABD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ڴ<EFBFBD><DAB4><EFBFBD> g_init_pool <20>С<EFBFBD>ied_usr->LD_info[cpuno - 1].LD_name <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>LD_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PQMonitorPQM{cpuno} <20><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>
// <20><> g_init_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>̶<EFBFBD> 256 <20>ֽڵ<D6BD><DAB5>ڴ<EFBFBD>
ied_usr->LD_info[cpuno].LD_name = (char *)apr_palloc(g_init_pool, 256);
// <20><> str <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>Ƶ<EFBFBD>Ԥ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><E0B8B4> 256 <20>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
apr_cpystrn(ied_usr->LD_info[cpuno].LD_name, str, 256);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64> //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool); //<2F><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֱ<EFBFBD>Ϊ ied_usr->LD_info[cpuno - 1] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ht_fcd <20><> ht_full_fcda<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿յĹ<D5B5>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>apr_hash_make(g_init_pool) <20><><EFBFBD><EFBFBD> g_init_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ռ<EFBFBD> ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool); //<2F><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֱ<EFBFBD>Ϊ ied_usr->LD_info[cpuno - 1] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ht_fcd <20><> ht_full_fcda<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿յĹ<D5B5>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>apr_hash_make(g_init_pool) <20><><EFBFBD><EFBFBD> g_init_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ռ<EFBFBD>
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);//<2F><><EFBFBD>ǵ<EFBFBD> key ֵ<><D6B5> value <20>ں<EFBFBD><DABA><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>п<EFBFBD><D0BF>ܻᱻ<DCBB><E1B1BB><EFBFBD><EFBFBD> ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);//<2F><><EFBFBD>ǵ<EFBFBD> key ֵ<><D6B5> value <20>ں<EFBFBD><DABA><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>п<EFBFBD><D0BF>ܻᱻ<DCBB><E1B1BB><EFBFBD><EFBFBD>
@@ -14195,9 +14207,23 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno); apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD> LD_name<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD> LD_name<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
if (ied_usr->LD_info[cpuno - 1].LD_name == NULL) { if (ied_usr->LD_info[cpuno - 1].LD_name == NULL) {
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);
//lnk20250208<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "new space for LD_name" << std::endl;
//lnk20250208<30><38>ʹ<EFBFBD><CAB9>apr_pstrdup<75><70>ʹ<EFBFBD>ù̶<C3B9><CCB6><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD>
//ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);
// <20><> g_init_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>̶<EFBFBD> 256 <20>ֽڵ<D6BD><DAB5>ڴ<EFBFBD>
ied_usr->LD_info[cpuno].LD_name = (char *)apr_palloc(g_init_pool, 256);
// <20><> str <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>Ƶ<EFBFBD>Ԥ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><E0B8B4> 256 <20>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
apr_cpystrn(ied_usr->LD_info[cpuno].LD_name, str, 256);
} else {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB><EFBFBD><EFBFBD>ԭ<EFBFBD>пռ<D0BF><D5BC>ϸ<EFBFBD><CFB8><EFBFBD> } else {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB><EFBFBD><EFBFBD>ԭ<EFBFBD>пռ<D0BF><D5BC>ϸ<EFBFBD><CFB8><EFBFBD>
apr_cpystrn(ied_usr->LD_info[cpuno - 1].LD_name, str, sizeof(ied_usr->LD_info[cpuno - 1].LD_name));
//lnk20250208<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "old space for LD_name" << std::endl;
apr_cpystrn(ied_usr->LD_info[cpuno - 1].LD_name, str, 256);
} }
ldname = ied_usr->LD_info[cpuno - 1].LD_name; ldname = ied_usr->LD_info[cpuno - 1].LD_name;
@@ -14394,7 +14420,15 @@ int parse_rpt_log_ini_one(ied_t* ied)
//g_DevFlagû<67><C3BB>ʹ<EFBFBD><CAB9> //g_DevFlagû<67><C3BB>ʹ<EFBFBD><CAB9>
parse_one_rpt_log_ini(g_DevFlag, rpt_cfg_strlists[type], log_cfg_strlists[type], ied_usr->dev_type); parse_one_rpt_log_ini(g_DevFlag, rpt_cfg_strlists[type], log_cfg_strlists[type], ied_usr->dev_type);
} }
//lnk20250208<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "ied->cpucount:" << (int)(ied->cpucount) <<std::endl;
for (cpuno = 0; cpuno < ied->cpucount; cpuno++) {//<2F><><EFBFBD><EFBFBD>iedʵ<64>ʵļ<CAB5><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> for (cpuno = 0; cpuno < ied->cpucount; cpuno++) {//<2F><><EFBFBD><EFBFBD>iedʵ<64>ʵļ<CAB5><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//lnk20250208<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "cpuno:" << cpuno << "log init !!!!!!" <<std::endl;
LD_info = &(ied_usr->LD_info[cpuno]); LD_info = &(ied_usr->LD_info[cpuno]);
//<2F><>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ڴ棬<DAB4><E6A3AC><EFBFBD><EFBFBD><EFBFBD>жϲ<D0B6><CFB2>ܴ<EFBFBD>g_init_pool<6F>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ڴ棬lnk20250122 //<2F><>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ڴ棬<DAB4><E6A3AC><EFBFBD><EFBFBD><EFBFBD>жϲ<D0B6><CFB2>ܴ<EFBFBD>g_init_pool<6F>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ڴ棬lnk20250122
@@ -14406,13 +14440,39 @@ int parse_rpt_log_ini_one(ied_t* ied)
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD> LD_name<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD> LD_name<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
if (ied_usr->LD_info[cpuno].LD_name == NULL) { if (ied_usr->LD_info[cpuno].LD_name == NULL) {
ied_usr->LD_info[cpuno].LD_name = apr_pstrdup(g_init_pool, str);
//lnk20250208<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "cpuno:" << cpuno << "apr_pstrdup" <<std::endl;
//lnk20250208<30><38>ʹ<EFBFBD><CAB9>apr_pstrdup<75><70>ʹ<EFBFBD>ù̶<C3B9><CCB6><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD>
//ied_usr->LD_info[cpuno].LD_name = apr_pstrdup(g_init_pool, str);
// <20><> g_init_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>̶<EFBFBD> 256 <20>ֽڵ<D6BD><DAB5>ڴ<EFBFBD>
ied_usr->LD_info[cpuno].LD_name = (char *)apr_palloc(g_init_pool, 256);
// <20><> str <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>Ƶ<EFBFBD>Ԥ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><E0B8B4> 256 <20>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
apr_cpystrn(ied_usr->LD_info[cpuno].LD_name, str, 256);
} else {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB><EFBFBD><EFBFBD>ԭ<EFBFBD>пռ<D0BF><D5BC>ϸ<EFBFBD><CFB8><EFBFBD> } else {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB><EFBFBD><EFBFBD>ԭ<EFBFBD>пռ<D0BF><D5BC>ϸ<EFBFBD><CFB8><EFBFBD>
apr_cpystrn(ied_usr->LD_info[cpuno - 1].LD_name, str, sizeof(ied_usr->LD_info[cpuno - 1].LD_name));
//lnk20250208<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "cpuno:" << cpuno << "apr_cpystrn" <<std::endl;
// ȷ<><C8B7>Ŀ<EFBFBD><EFBFBD><EABBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B9BB>
std::cout << "strlen(str):" << strlen(str) << "strlen(ied_usr->LD_info[cpuno].LD_name)" << strlen(ied_usr->LD_info[cpuno].LD_name) <<std::endl;
if (strlen(str) < strlen(ied_usr->LD_info[cpuno].LD_name)) {
apr_cpystrn(ied_usr->LD_info[cpuno].LD_name, str, 256);
} else {
std::cerr << "Error: target buffer is too small." << std::endl;
// <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
}
} }
delete[] tmp;//Get_IED<45>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬ʹ<E6A3AC>ú<EFBFBD>ɾ<EFBFBD><C9BE> delete[] tmp;//Get_IED<45>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬ʹ<E6A3AC>ú<EFBFBD>ɾ<EFBFBD><C9BE>
//lnk20250208<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "cpuno:" << cpuno << " fill report control" <<std::endl;
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
init_rptctrl_by_count(LD_info, rpt_cfg_strlists[type]->size()); init_rptctrl_by_count(LD_info, rpt_cfg_strlists[type]->size());
for (int i = 0; i < rpt_cfg_strlists[type]->size(); ++i) { for (int i = 0; i < rpt_cfg_strlists[type]->size(); ++i) {

View File

@@ -597,10 +597,12 @@ bool ParseXMLConfig2(XmlConfig *cfg, list<CTopic*> *ctopiclist,QString path) //
QFile file(xml_dir + JSON_CONFIG_FN); QFile file(xml_dir + JSON_CONFIG_FN);
if (!file.open(QIODevice::ReadOnly | QFile::Text)) //<2F><>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>xml if (!file.open(QIODevice::ReadOnly | QFile::Text)) //<2F><>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>xml
{ {
std::cout << "can't open not define config file" << std::endl;//lnk20250208
return 0; return 0;
} }
if (!doc.setContent(&file)) //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>doc<6F><63> if (!doc.setContent(&file)) //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>doc<6F><63>
{ {
std::cout << "can't read not define config file" << std::endl;//lnk20250208
file.close(); file.close();
return 0; return 0;
} }
@@ -613,10 +615,12 @@ bool ParseXMLConfig2(XmlConfig *cfg, list<CTopic*> *ctopiclist,QString path) //
QFile file(tmppath); QFile file(tmppath);
if (!file.open(QIODevice::ReadOnly | QFile::Text)) //<2F><>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>xml if (!file.open(QIODevice::ReadOnly | QFile::Text)) //<2F><>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>xml
{ {
std::cout << "can't open config file" << tmppath.toStdString() <<std::endl;//lnk20250208
return 0; return 0;
} }
if (!doc.setContent(&file)) //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>doc<6F><63> if (!doc.setContent(&file)) //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>doc<6F><63>
{ {
std::cout << "can't read config file" << tmppath.toStdString() <<std::endl;//lnk20250208
file.close(); file.close();
return 0; return 0;
} }
@@ -2896,7 +2900,7 @@ void Set_xml_databaseinfo(char* MODEL_ID, char* TMNL_TYPE, char* FILE_PATH, char
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125
cout << "setxmldatabase:" << TMNL_TYPE << endl; cout << "setxmldatabase:" << TMNL_TYPE << endl;
if (!xmlinfo_list.contains(type))//<2F><><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>в<EFBFBD><EFBFBD><EFBFBD> if (!xmlinfo_list.contains(type))//<2F><><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>û<EFBFBD>
{ {
Xmldata* config = new Xmldata(); //û<>ҵ<EFBFBD><D2B5>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ն<EFBFBD><D5B6><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>б<EFBFBD><D0B1><EFBFBD> Xmldata* config = new Xmldata(); //û<>ҵ<EFBFBD><D2B5>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ն<EFBFBD><D5B6><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>б<EFBFBD><D0B1><EFBFBD>
xmlinfo_list.insert(type, config); xmlinfo_list.insert(type, config);
@@ -2904,7 +2908,7 @@ void Set_xml_databaseinfo(char* MODEL_ID, char* TMNL_TYPE, char* FILE_PATH, char
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125
cout << "xmlinfo_list insert type:" << type.toStdString() << endl; cout << "xmlinfo_list insert type:" << type.toStdString() << endl;
} }
else else//<2F><EFBFBD>͸<EFBFBD><CDB8>¸<EFBFBD><C2B8><EFBFBD>
{ {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125
cout << "xmlinfo_list type contain:" << type.toStdString() << endl; cout << "xmlinfo_list type contain:" << type.toStdString() << endl;
@@ -2916,13 +2920,19 @@ void Set_xml_databaseinfo(char* MODEL_ID, char* TMNL_TYPE, char* FILE_PATH, char
else { else {
xmlinfo_list[type]->updataflag = true; xmlinfo_list[type]->updataflag = true;
} }
//lnk20250208<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} }
xmlinfo_list[type]->xmlbase.MODEL_ID.append(id); //lnk20250208<30><38><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>Ǹ<EFBFBD><C7B8>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD>׷<EFBFBD><D7B7>
xmlinfo_list[type]->xmlbase.TMNL_TYPE.append(type); //xmlinfo_list[type]->xmlbase.MODEL_ID.append(id);
xmlinfo_list[type]->xmlbase.FILE_PATH.append(filepath); //xmlinfo_list[type]->xmlbase.TMNL_TYPE.append(type);
xmlinfo_list[type]->xmlbase.FILE_NAME.append(name); //xmlinfo_list[type]->xmlbase.FILE_PATH.append(filepath);
//xmlinfo_list[type]->xmlbase.FILE_NAME.append(name);
xmlinfo_list[type]->xmlbase.MODEL_ID = id;
xmlinfo_list[type]->xmlbase.TMNL_TYPE = type;
xmlinfo_list[type]->xmlbase.FILE_PATH = filepath;
xmlinfo_list[type]->xmlbase.FILE_NAME = name;
QDateTime time(QDate(year, month, day), QTime(hour, minute, second)); QDateTime time(QDate(year, month, day), QTime(hour, minute, second));
xmlinfo_list[type]->xmlbase.datetime = time; xmlinfo_list[type]->xmlbase.datetime = time;
@@ -3047,7 +3057,7 @@ char* Get_IED(char* devtype)
QString type; QString type;
type.append(devtype); type.append(devtype);
if (xmlinfo_list.contains(type)) { if (xmlinfo_list.contains(type)) {
cout << "!!!!!!!!!! xmlinfo_list.contains(devtype) == 1 !!!!!!!!!!!" << endl; cout << "!!!!!!!!!! Get_IED xmlinfo_list.contains(devtype) == 1 !!!!!!!!!!!" << endl;
QString ied; QString ied;
ied.append(xmlinfo_list[devtype]->xmlcfg.IEDname);//PQMonitor ied.append(xmlinfo_list[devtype]->xmlcfg.IEDname);//PQMonitor
ied.append(xmlinfo_list[devtype]->xmlcfg.LDevicePrefix); ied.append(xmlinfo_list[devtype]->xmlcfg.LDevicePrefix);
@@ -3059,7 +3069,7 @@ char* Get_IED(char* devtype)
return charArray; return charArray;
} }
else { else {
cout << "!!!!!!!!!! xmlinfo_list.contains(devtype) == 0 !!!!!!!!!!!" << endl; cout << "!!!!!!!!!! Get_IED xmlinfo_list.contains(devtype) == 0 !!!!!!!!!!!" << endl;
//cout << "ttttttttttttttt" << topicList.size() << endl; //cout << "ttttttttttttttt" << topicList.size() << endl;
//cout << "ttttttttttttttt" << xmlcfg.IEDname.toAscii().data() << endl; //cout << "ttttttttttttttt" << xmlcfg.IEDname.toAscii().data() << endl;
QString ied; QString ied;

View File

@@ -721,8 +721,16 @@ std::string extractDataJson(const char* inputJson) {
return ""; return "";
} }
// <20><>ȡ "messageBoy" <20><><EFBFBD><EFBFBD>
cJSON* messageBoy = cJSON_GetObjectItem(root, "messageBoy");
if (messageBoy == NULL || messageBoy->type != cJSON_Object) {
std::cerr << "'messageBoy' is missing or is not an object" << std::endl;
cJSON_Delete(root);
return "";
}
// <20><>ȡ "data" <20><><EFBFBD><EFBFBD> // <20><>ȡ "data" <20><><EFBFBD><EFBFBD>
cJSON* data = cJSON_GetObjectItem(root, "data"); cJSON* data = cJSON_GetObjectItem(messageBoy, "data");
if (data == NULL || data->type != cJSON_Array) { if (data == NULL || data->type != cJSON_Array) {
std::cerr << "'data' is missing or is not an array" << std::endl; std::cerr << "'data' is missing or is not an array" << std::endl;
cJSON_Delete(root); cJSON_Delete(root);
@@ -768,12 +776,20 @@ bool parseJsonMessageRT(const std::string& body, std::string& devSeries, std::st
return false; return false;
} }
// <20><>ȡ "messageBoy" <20><><EFBFBD><EFBFBD>
cJSON* messageBoy = cJSON_GetObjectItem(root, "messageBoy");
if (messageBoy == NULL || messageBoy->type != cJSON_Object) {
std::cerr << "'messageBoy' is missing or is not an object" << std::endl;
cJSON_Delete(root);
return "";
}
// <20><>ȡ<EFBFBD>ֶ<EFBFBD> // <20><>ȡ<EFBFBD>ֶ<EFBFBD>
cJSON* devSeriesItem = cJSON_GetObjectItem(root, "devSeries"); cJSON* devSeriesItem = cJSON_GetObjectItem(messageBoy, "devSeries");
cJSON* lineItem = cJSON_GetObjectItem(root, "line"); cJSON* lineItem = cJSON_GetObjectItem(messageBoy, "line");
cJSON* realDataItem = cJSON_GetObjectItem(root, "realData"); cJSON* realDataItem = cJSON_GetObjectItem(messageBoy, "realData");
cJSON* soeDataItem = cJSON_GetObjectItem(root, "soeData"); cJSON* soeDataItem = cJSON_GetObjectItem(messageBoy, "soeData");
cJSON* limitItem = cJSON_GetObjectItem(root, "limit"); cJSON* limitItem = cJSON_GetObjectItem(messageBoy, "limit");
if (devSeriesItem && lineItem && realDataItem && soeDataItem && limitItem) { if (devSeriesItem && lineItem && realDataItem && soeDataItem && limitItem) {
devSeries = devSeriesItem->valuestring; devSeries = devSeriesItem->valuestring;
@@ -896,6 +912,46 @@ void close_listening_socket() {
} }
} }
//<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ip<69><70>ʽ
bool isValidIP(const std::string &ip) {
std::vector<std::string> parts;
std::stringstream ss(ip);
std::string part;
// ʹ<><CAB9> "." <20><>Ϊ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD> IP <20><>ַ<EFBFBD>ָ<EFBFBD><D6B8>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>
while (getline(ss, part, '.')) {
parts.push_back(part);
}
// IP <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD>
if (parts.size() != 4) {
return false;
}
// У<><D0A3>ÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><> 255 ֮<><D6AE>
for (size_t i = 0; i < parts.size(); ++i) {
// У<><D0A3>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
for (size_t j = 0; j < parts[i].size(); ++j) {
if (!isdigit(parts[i][j])) {
return false;
}
}
// ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>Χ<EFBFBD><CEA7>
int num = atoi(parts[i].c_str());
if (num < 0 || num > 255) {
return false;
}
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><E3A3A8> 01<30><31>001 <20>ȣ<EFBFBD>
if (parts[i].length() > 1 && parts[i][0] == '0') {
return false;
}
}
return true;
}
//ִ<>нű<D0BD><C5B1><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD> //ִ<>нű<D0BD><C5B1><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>
void execute_bash(string fun,int process_num,string type) void execute_bash(string fun,int process_num,string type)
{ {
@@ -918,6 +974,25 @@ void execute_bash(string fun,int process_num,string type)
system(command); system(command);
} }
//ִ<>нű<D0BD><C5B1><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>
void execute_bash_debug(string fun,string ip,string type)
{
const char* script = "/FeProject/bin/set_debug.sh";//ʹ<><CAB9>setsid<69><64>ֹ<EFBFBD>˿<EFBFBD>ռ<EFBFBD><D5BC>
const char* param1 = fun.c_str();
const char* param2 = ip.c_str();
const char* param3 = type.c_str();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char command[256];
snprintf(command, sizeof(command), "%s %s %s %s &", script, param1, param2, param3);
std::cout << "command:" << command <<std::endl;
// ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
system(command);
}
void parse_set(const std::string& json_str) { void parse_set(const std::string& json_str) {
// <20><><EFBFBD><EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD> // <20><><EFBFBD><EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>
cJSON* root = cJSON_Parse(json_str.c_str()); cJSON* root = cJSON_Parse(json_str.c_str());
@@ -926,8 +1001,16 @@ void parse_set(const std::string& json_str) {
return; return;
} }
// <20><>ȡ "messageBoy" <20><><EFBFBD><EFBFBD>
cJSON* messageBoy = cJSON_GetObjectItem(root, "messageBoy");
if (messageBoy == NULL || messageBoy->type != cJSON_Object) {
std::cerr << "'messageBoy' is missing or is not an object" << std::endl;
cJSON_Delete(root);
return ;
}
// <20><>ȡ code <20>ֶ<EFBFBD> // <20><>ȡ code <20>ֶ<EFBFBD>
cJSON* code = cJSON_GetObjectItem(root, "code"); cJSON* code = cJSON_GetObjectItem(messageBoy, "code");
if (code == nullptr) { if (code == nullptr) {
std::cout << "Missing 'code' in JSON." << std::endl; std::cout << "Missing 'code' in JSON." << std::endl;
cJSON_Delete(root); cJSON_Delete(root);
@@ -946,7 +1029,7 @@ void parse_set(const std::string& json_str) {
string index_value_str = index->valuestring; string index_value_str = index->valuestring;
int index_value = StringToInt(index_value_str); int index_value = StringToInt(index_value_str);
//<2F><><EFBFBD>̺<EFBFBD>Ϊ0<CEAA>Ľ<EFBFBD><C4BD>̴<EFBFBD><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ //<2F><><EFBFBD>̺<EFBFBD>Ϊ0<CEAA>Ľ<EFBFBD><C4BD>̴<EFBFBD><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if (index_value != g_front_seg_index && g_front_seg_index !=0) { if (index_value != g_front_seg_index && g_front_seg_index !=0) {
std::cout << "msg index:"<< index_value <<"doesnt match self index:" << g_front_seg_index << std::endl; std::cout << "msg index:"<< index_value <<"doesnt match self index:" << g_front_seg_index << std::endl;
cJSON_Delete(root); cJSON_Delete(root);
@@ -997,6 +1080,38 @@ void parse_set(const std::string& json_str) {
} }
} }
else if (code_str == "set_debug"){
if(g_node_id == STAT_DATA_BASE_NODE_ID && g_front_seg_index == 1){
std::cout << "cfg_stat_data process" << g_front_seg_index <<" handle this msg" << std::endl;
// <20><><EFBFBD><EFBFBD> set_process
cJSON* data = cJSON_GetObjectItem(root, "data");
if (data != nullptr && data->type == cJSON_Array) {
int data_size = cJSON_GetArraySize(data);
for (int i = 0; i < data_size; i++) {
cJSON* item = cJSON_GetArrayItem(data, i);
std::string fun = cJSON_GetObjectItem(item, "fun")->valuestring;
std::string ip = cJSON_GetObjectItem(item, "ip")->valuestring;
std::string frontType = cJSON_GetObjectItem(item, "frontType")->valuestring;
//У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if((fun == "start" || fun == "delete") &&
isValidIP(ip) &&
(frontType == "stat" || frontType == "recall" || frontType == "3s" || frontType == "comtrade")){
execute_bash_debug(fun, ip, frontType);
std::cout << "!!!!!!!!!!!!!!!! execute mark:" << i << " !!!!!!!!!!!!!!!" <<std::endl;
}
else{
std::cout << "param is not executable" <<std::endl;
}
}
std::cout << "this msg should only execute once" <<std::endl;
}
}
else{
std::cout << "only cfg_stat_data index 1 can control process,this process not handle this msg" << std::endl;
}
}
else{ else{
std::cout << "set process code str error" <<std::endl; std::cout << "set process code str error" <<std::endl;
} }
@@ -1197,15 +1312,23 @@ void parse_control(const std::string& json_str, const std::string& output_dir) {
return; return;
} }
// <20><>ȡ "messageBoy" <20><><EFBFBD><EFBFBD>
cJSON* messageBoy = cJSON_GetObjectItem(root, "messageBoy");
if (messageBoy == NULL || messageBoy->type != cJSON_Object) {
std::cerr << "'messageBoy' is missing or is not an object" << std::endl;
cJSON_Delete(root);
return ;
}
// <20><>ȡ code <20>ֶ<EFBFBD> // <20><>ȡ code <20>ֶ<EFBFBD>
cJSON* code = cJSON_GetObjectItem(root, "code"); cJSON* code = cJSON_GetObjectItem(messageBoy, "code");
if (code == nullptr) { if (code == nullptr) {
std::cout << "Missing 'code' in JSON." << std::endl; std::cout << "Missing 'code' in JSON." << std::endl;
cJSON_Delete(root); cJSON_Delete(root);
return; return;
} }
cJSON* index = cJSON_GetObjectItem(root, "index"); cJSON* index = cJSON_GetObjectItem(messageBoy, "index");
if (index == nullptr) { if (index == nullptr) {
std::cout << "Missing 'index' in JSON." << std::endl; std::cout << "Missing 'index' in JSON." << std::endl;
cJSON_Delete(root); cJSON_Delete(root);
@@ -1235,7 +1358,7 @@ void parse_control(const std::string& json_str, const std::string& output_dir) {
std::cout << "add or update ledger" <<std::endl; std::cout << "add or update ledger" <<std::endl;
// <20><><EFBFBD><EFBFBD> add_terminal <20><> ledger_modify // <20><><EFBFBD><EFBFBD> add_terminal <20><> ledger_modify
cJSON* data = cJSON_GetObjectItem(root, "data"); cJSON* data = cJSON_GetObjectItem(messageBoy, "data");
if (data != nullptr && data->type == cJSON_Array) { if (data != nullptr && data->type == cJSON_Array) {
int data_size = cJSON_GetArraySize(data); int data_size = cJSON_GetArraySize(data);
for (int i = 0; i < data_size; i++) { for (int i = 0; i < data_size; i++) {