the heartbeat reply ledgerupdate is ok

This commit is contained in:
lnk
2025-05-12 16:43:42 +08:00
parent 8a2e6ea537
commit a6685ca801
9 changed files with 171 additions and 192 deletions

View File

@@ -315,14 +315,14 @@ int main(int argc, const char **argv)
}
//lnk20241211 添加测试开关
pthread_mutex_lock(&mtx);
/*pthread_mutex_lock(&mtx);
if (!G_TEST_FLAG && g_front_num_count >= 30 && g_onlyIP[0] == 0 && g_node->n_clients>10) {//30分钟连接数量过低且不是单连且台账大于十个终端
MVL_LOG_ACSE0("MYLOG: g_front_num_count>=20, so exit to restart ");
apr_sleep(apr_time_from_sec(10));
exit(-1039);
}
pthread_mutex_unlock(&mtx);
pthread_mutex_unlock(&mtx);*/
}

View File

@@ -671,10 +671,17 @@ void check_3s_config()
int isValidModelId(const char* model_id) {
size_t i;
if (model_id == NULL) return 0; // NULL 无效
if (model_id == NULL)
{
printf("!!!model_id null!!!\n");
return 0;
} // NULL 无效
size_t len = strlen(model_id);
if (len < 4) return 0; // 长度 < 4 无效
if (len < 4) {
printf("!!!model_id length < 4!!!\n");
return 0; // 长度 < 4 无效
}
// 检查是否全是空格
for (i = 0; i < len; i++) {
@@ -682,6 +689,7 @@ int isValidModelId(const char* model_id) {
return 1; // 只要包含非空格字符,就是合法的
}
}
printf("!!!model_id only space!!!\n");
return 0; // 仅包含空格,无效
}
@@ -774,6 +782,9 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
//添加mq响应台账添加失败台账挂满
//update[i].guid
char msg[256];
sprintf(msg, "终端 id: %s 台账更新失败, 这个进程的台账空间已满,达到了配置台账数量的最大值", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
return;
}
@@ -798,14 +809,24 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));
ied->usr_ext = ied_usr;//内存挂到ied上
if (ied_usr == NULL)
return APR_ENOMEM;
if (ied_usr == NULL){
char msg[256];
snprintf(msg, sizeof(msg), "终端 id: %s 台账更新失败,没有找到台账的终端空间", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
return ;
}
ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;//从FeProject/子功能目录/etc/pt61850netd_pqfe.xml中读取的总查询时间
ied_usr->LD_info = (LD_info_t*)apr_pcalloc(g_init_pool, MAX_CPUNO * sizeof(LD_info_t));//内存挂到ied上
if (ied_usr->LD_info == NULL)
return APR_ENOMEM;
if (ied_usr->LD_info == NULL){
char msg[256];
snprintf(msg, sizeof(msg), "终端 id: %s 台账更新失败,没有找到台账的监测点空间", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
return ;
}
ied_usr->dev_flag = ENABLE;//终端有效
@@ -821,22 +842,27 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
int ret = update_one_terminal_ledger(update,i,ied,terminal_index,ied_take);
if(ret){
printf("ledger can not be update!!!!!quit process!!!!!\n");
return 0;
char msg[256];
snprintf(msg, sizeof(msg), "终端 id: %s 台账更新失败,无法写入台账", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
}
//3-写入台账内容///////////////////////////////////
//4-配置映射文件//////////////////////////////
char model[64];
// 获取模型ID检查是否返回 NULL
char* model_id = parse_model_cfg_web_one(ied);//存储在/FeProject/dat/
parse_model_cfg_web_one(ied,model);//存储在/FeProject/dat/
if (isValidModelId(model_id)) { //lnk20250313防止拿不到映射文件
if (isValidModelId(model)) { //lnk20250313防止拿不到映射文件
// 安全拷贝字符串到 model 数组
strncpy(model, model_id, sizeof(model) - 1);
strncpy(model, model, sizeof(model) - 1);
model[sizeof(model) - 1] = '\0'; // 确保以 null 结尾
printf("ledger Model ID: %s\n", model);
} else {
printf("ledger No model ID found.quit\n");
char msg[256];
snprintf(msg, sizeof(msg), "终端 id: %s 台账更新失败,没有找到装置型号", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
return ;
}
char full_path[128];
@@ -865,6 +891,9 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
//8响应添加成功
//update[i].guid
char msg[256];
snprintf(msg, sizeof(msg), "终端 id: %s 台账添加成功", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
}
}
@@ -908,22 +937,31 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
int ret = update_one_terminal_ledger(update,i,ied,ied_usr->dev_idx,1);//1更新已有的ied
if(ret){
printf("ledger can not be update!!!!!quit process!!!!!\n");
return 0;
char msg[256];
snprintf(msg, sizeof(msg), "终端 id: %s 台账更新失败,台账无法写入", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
return ;
}
//3-写入台账内容////////////////////////////////////////////
//4-配置映射文件///////////////////////////////////////////
char model[64] = {0};
// 获取模型ID检查是否返回 NULL
char* model_id = parse_model_cfg_web_one(ied);//存储在/FeProject/dat/
parse_model_cfg_web_one(ied,model);//存储在/FeProject/dat/
if (model_id != NULL) {
if (isValidModelId(model)) {
// 安全拷贝字符串到 model 数组
strncpy(model, model_id, sizeof(model) - 1);
strncpy(model, model, sizeof(model) - 1);
model[sizeof(model) - 1] = '\0'; // 确保以 null 结尾
printf("ledger Model ID: %s\n", model);
} else {
printf("ledger No model ID found.\n");
char msg[256];
snprintf(msg, sizeof(msg), "终端 id: %s 台账更新失败,没有找到装置型号", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
return ;
}
char full_path[128];
snprintf(full_path, sizeof(full_path), "/FeProject/dat/%s.xml", model); // 拼接路径
@@ -949,6 +987,9 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
//8响应添加成功
//update[i].guid
char msg[256];
snprintf(msg, sizeof(msg), "终端 id: %s 台账修改成功", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
}
}
@@ -957,6 +998,9 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
//添加mq响应台账添加失败台账找不到
//update[i].guid
char msg[256];
sprintf(msg, "终端 id: %s 台账修改失败, 无法找到这个终端", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
}
}
///////////////////////////////////////////////////////////////////////////////delete
@@ -1032,7 +1076,10 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
//更新数据//////////////////////////////////////////////////////////////////////
//7响应添加成功
//update[i].guid
//update[i].guid
char msg[256];
snprintf(msg, sizeof(msg), "终端 id: %s 台账删除成功", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
}
}
@@ -1041,6 +1088,10 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
//添加mq响应台账添加失败台账找不到
//update[i].guid
char msg[256];
sprintf(msg, "终端 id: %s 台账删除失败, 无法找到这个终端", update[i].terminal_id);
send_reply_to_kafka_c(update[i].guid, "2", msg);
}
}

View File

@@ -472,7 +472,7 @@ bool isCharPtrEmpty(const char* str);
int parse_ledger_update_xml(trigger_update_xml_t* trigger_update_xml);
int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_index,int ied_take);
void print_trigger_update_xml(const trigger_update_xml_t* trigger_update);
char* parse_model_cfg_web_one(ied_t* ied);
char* parse_model_cfg_web_one(ied_t* ied,char* out_model);
void Set_xml_nodeinfo_one(char* dev_type);
void create_ledger_log(trigger_update_xml_t* ledger_update_xml);
ied_t* find_ied_unused();