add delta process

This commit is contained in:
lnk
2025-02-14 16:44:38 +08:00
parent 399c3151a8
commit 322f41a03b
9 changed files with 931 additions and 83 deletions

View File

@@ -721,16 +721,24 @@ std::string extractDataJson(const char* inputJson) {
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;
// <20><>ȡ "messageBody" <20><><EFBFBD><EFBFBD>
cJSON* messageJson = cJSON_GetObjectItem(root, "messageBody");
if (messageJson == NULL || messageJson->type != cJSON_String) {
std::cerr << "'messageJson' is missing or is not an cJSON_String" << std::endl;
cJSON_Delete(root);
return "";
return false;
}
// <20><><EFBFBD><EFBFBD> messageBody <20>е<EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>
cJSON* messageBody = cJSON_Parse(messageJson->valuestring); // <20><><EFBFBD><EFBFBD> messageBody <20>ַ<EFBFBD><D6B7><EFBFBD>
if (messageBody == NULL) {
std::cerr << "Failed to parse 'messageBody' JSON." << std::endl;
cJSON_Delete(root);
return false;
}
// <20><>ȡ "data" <20><><EFBFBD><EFBFBD>
cJSON* data = cJSON_GetObjectItem(messageBoy, "data");
cJSON* data = cJSON_GetObjectItem(messageBody, "data");
if (data == NULL || data->type != cJSON_Array) {
std::cerr << "'data' is missing or is not an array" << std::endl;
cJSON_Delete(root);
@@ -776,20 +784,28 @@ bool parseJsonMessageRT(const std::string& body, std::string& devSeries, std::st
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;
// <20><>ȡ "messageBody" <20><><EFBFBD><EFBFBD>
cJSON* messageJson = cJSON_GetObjectItem(root, "messageBody");
if (messageJson == NULL || messageJson->type != cJSON_String) {
std::cerr << "'messageJson' is missing or is not an cJSON_String" << std::endl;
cJSON_Delete(root);
return "";
return false;
}
// <20><><EFBFBD><EFBFBD> messageBody <20>е<EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>
cJSON* messageBody = cJSON_Parse(messageJson->valuestring); // <20><><EFBFBD><EFBFBD> messageBody <20>ַ<EFBFBD><D6B7><EFBFBD>
if (messageBody == NULL) {
std::cerr << "Failed to parse 'messageBody' JSON." << std::endl;
cJSON_Delete(root);
return false;
}
// <20><>ȡ<EFBFBD>ֶ<EFBFBD>
cJSON* devSeriesItem = cJSON_GetObjectItem(messageBoy, "devSeries");
cJSON* lineItem = cJSON_GetObjectItem(messageBoy, "line");
cJSON* realDataItem = cJSON_GetObjectItem(messageBoy, "realData");
cJSON* soeDataItem = cJSON_GetObjectItem(messageBoy, "soeData");
cJSON* limitItem = cJSON_GetObjectItem(messageBoy, "limit");
cJSON* devSeriesItem = cJSON_GetObjectItem(messageBody, "devSeries");
cJSON* lineItem = cJSON_GetObjectItem(messageBody, "line");
cJSON* realDataItem = cJSON_GetObjectItem(messageBody, "realData");
cJSON* soeDataItem = cJSON_GetObjectItem(messageBody, "soeData");
cJSON* limitItem = cJSON_GetObjectItem(messageBody, "limit");
if (devSeriesItem && lineItem && realDataItem && soeDataItem && limitItem) {
devSeries = devSeriesItem->valuestring;
@@ -975,17 +991,21 @@ void execute_bash(string fun,int process_num,string type)
}
//ִ<>нű<D0BD><C5B1><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>
void execute_bash_debug(string fun,string ip,string type)
void execute_bash_debug(string fun,string ip,string type,int proindex)
{
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><> proindex ת<><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
char param4[32];
snprintf(param4, sizeof(param4), "%d", proindex);
// <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);
snprintf(command, sizeof(command), "%s %s %s %s &", script, param1, param2, param3,param4);
std::cout << "command:" << command <<std::endl;
@@ -1001,23 +1021,31 @@ void parse_set(const std::string& json_str) {
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;
// <20><>ȡ "messageBody" <20><><EFBFBD><EFBFBD>
cJSON* messageJson = cJSON_GetObjectItem(root, "messageBody");
if (messageJson == NULL || messageJson->type != cJSON_String) {
std::cerr << "'messageJson' is missing or is not an cJSON_String" << std::endl;
cJSON_Delete(root);
return ;
}
// <20><><EFBFBD><EFBFBD> messageBody <20>е<EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>
cJSON* messageBody = cJSON_Parse(messageJson->valuestring); // <20><><EFBFBD><EFBFBD> messageBody <20>ַ<EFBFBD><D6B7><EFBFBD>
if (messageBody == NULL) {
std::cerr << "Failed to parse 'messageBody' JSON." << std::endl;
cJSON_Delete(root);
return ;
}
// <20><>ȡ code <20>ֶ<EFBFBD>
cJSON* code = cJSON_GetObjectItem(messageBoy, "code");
cJSON* code = cJSON_GetObjectItem(messageBody, "code");
if (code == nullptr) {
std::cout << "Missing 'code' in JSON." << std::endl;
cJSON_Delete(root);
return;
}
cJSON* index = cJSON_GetObjectItem(messageBoy, "index");
cJSON* index = cJSON_GetObjectItem(messageBody, "index");
if (index == nullptr) {
std::cout << "Missing 'index' in JSON." << std::endl;
cJSON_Delete(root);
@@ -1047,7 +1075,7 @@ void parse_set(const std::string& json_str) {
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(messageBoy, "data");
cJSON* data = cJSON_GetObjectItem(messageBody, "data");
if (data != nullptr && data->type == cJSON_Array) {
int data_size = cJSON_GetArraySize(data);
for (int i = 0; i < data_size; i++) {
@@ -1084,7 +1112,7 @@ void parse_set(const std::string& json_str) {
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(messageBoy, "data");
cJSON* data = cJSON_GetObjectItem(messageBody, "data");
if (data != nullptr && data->type == cJSON_Array) {
int data_size = cJSON_GetArraySize(data);
for (int i = 0; i < data_size; i++) {
@@ -1093,12 +1121,14 @@ void parse_set(const std::string& json_str) {
std::string fun = cJSON_GetObjectItem(item, "fun")->valuestring;
std::string ip = cJSON_GetObjectItem(item, "ip")->valuestring;
std::string frontType = cJSON_GetObjectItem(item, "frontType")->valuestring;
int proindex = cJSON_GetObjectItem(item, "proindex")->valueint;
//У<><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);
(frontType == "stat" || frontType == "recall" || frontType == "3s" || frontType == "comtrade") &&
(proindex >= 10 && proindex < 100)){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĽ<C3B5><C4BD>̺<EFBFBD>Ӧ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD>10С<30><D0A1>100
execute_bash_debug(fun, ip, frontType,proindex);
std::cout << "!!!!!!!!!!!!!!!! execute mark:" << i << " !!!!!!!!!!!!!!!" <<std::endl;
}
else{
@@ -1316,23 +1346,31 @@ void parse_control(const std::string& json_str, const std::string& output_dir) {
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;
// <20><>ȡ "messageBody" <20><><EFBFBD><EFBFBD>
cJSON* messageJson = cJSON_GetObjectItem(root, "messageBody");
if (messageJson == NULL || messageJson->type != cJSON_String) {
std::cerr << "'messageJson' is missing or is not an cJSON_String" << std::endl;
cJSON_Delete(root);
return ;
}
// <20><><EFBFBD><EFBFBD> messageBody <20>е<EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>
cJSON* messageBody = cJSON_Parse(messageJson->valuestring); // <20><><EFBFBD><EFBFBD> messageBody <20>ַ<EFBFBD><D6B7><EFBFBD>
if (messageBody == NULL) {
std::cerr << "Failed to parse 'messageBody' JSON." << std::endl;
cJSON_Delete(root);
return ;
}
// <20><>ȡ code <20>ֶ<EFBFBD>
cJSON* code = cJSON_GetObjectItem(messageBoy, "code");
cJSON* code = cJSON_GetObjectItem(messageBody, "code");
if (code == nullptr) {
std::cout << "Missing 'code' in JSON." << std::endl;
cJSON_Delete(root);
return;
}
cJSON* index = cJSON_GetObjectItem(messageBoy, "index");
cJSON* index = cJSON_GetObjectItem(messageBody, "index");
if (index == nullptr) {
std::cout << "Missing 'index' in JSON." << std::endl;
cJSON_Delete(root);
@@ -1362,7 +1400,7 @@ void parse_control(const std::string& json_str, const std::string& output_dir) {
std::cout << "add or update ledger" <<std::endl;
// <20><><EFBFBD><EFBFBD> add_terminal <20><> ledger_modify
cJSON* data = cJSON_GetObjectItem(messageBoy, "data");
cJSON* data = cJSON_GetObjectItem(messageBody, "data");
if (data != nullptr && data->type == cJSON_Array) {
int data_size = cJSON_GetArraySize(data);
for (int i = 0; i < data_size; i++) {
@@ -1533,7 +1571,7 @@ void parse_control(const std::string& json_str, const std::string& output_dir) {
std::cout << "delete ledger" <<std::endl;
// <20><><EFBFBD><EFBFBD> delete_terminal
cJSON* data = cJSON_GetObjectItem(root, "data");
cJSON* data = cJSON_GetObjectItem(messageBody, "data");
if (data != nullptr && data->type == cJSON_Array) {
int data_size = cJSON_GetArraySize(data);
for (int i = 0; i < data_size; i++) {
@@ -2201,7 +2239,8 @@ int json_block_create_data(char monid_char[], char* mms_str, double v, int flick
// return transfer_json_block_data(&json_blkd);
//}
int json_block_create_end(char monid_char[], int flicker_flag)//WW 2023<32><33>3<EFBFBD><33>13<31><33>16:38:41 <20><>ICD<43>޸<EFBFBD>
//lnk2024-8-16<31><36><EFBFBD>ӽ<EFBFBD><D3BD>߲<EFBFBD><DFB2><EFBFBD>
int json_block_create_end(char v_wiring_type[], char monid_char[], int flicker_flag)//WW 2023<32><33>3<EFBFBD><33>13<31><33>16:38:41 <20><>ICD<43>޸<EFBFBD>
{
json_block_data* pdata;
if (flicker_flag == 1) {
@@ -2250,7 +2289,8 @@ int json_block_create_end(char monid_char[], int flicker_flag)//WW 2023
printf("---------- json_block_create_end: pdata->mms_str_map.count() == 0 ----------\n");
return 1;
}
int ret = transfer_json_block_data(pdata);
//lnk2024-8-16<31><36><EFBFBD>ӽ<EFBFBD><D3BD>߲<EFBFBD><DFB2><EFBFBD>
int ret = transfer_json_block_data(v_wiring_type, pdata);
if (pdata != NULL)
delete pdata;