modify for ledgerupdate
This commit is contained in:
@@ -142,6 +142,9 @@ public:
|
|||||||
char port[64];
|
char port[64];
|
||||||
char timestamp[64];
|
char timestamp[64];
|
||||||
|
|
||||||
|
//lnk20250210<31><30><EFBFBD>ӽ<EFBFBD><D3BD>̺<EFBFBD>
|
||||||
|
char processNo[64];
|
||||||
|
|
||||||
ledger_monitor line[10];
|
ledger_monitor line[10];
|
||||||
|
|
||||||
char count_cfg[64]; //<2F><><EFBFBD><EFBFBD>̨<EFBFBD>˵<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
char count_cfg[64]; //<2F><><EFBFBD><EFBFBD>̨<EFBFBD>˵<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
@@ -4117,6 +4120,7 @@ void parse_terminal_from_data(trigger_update_xml_t* trigger_update_xml, const st
|
|||||||
strcpy(work_terminal.dev_type, extract_value(data, "devType").c_str());
|
strcpy(work_terminal.dev_type, extract_value(data, "devType").c_str());
|
||||||
strcpy(work_terminal.dev_key, extract_value(data, "devKey").c_str());
|
strcpy(work_terminal.dev_key, extract_value(data, "devKey").c_str());
|
||||||
strcpy(work_terminal.dev_series, extract_value(data, "series").c_str());
|
strcpy(work_terminal.dev_series, extract_value(data, "series").c_str());
|
||||||
|
strcpy(work_terminal.processNo, extract_value(data, "processNo").c_str());
|
||||||
strcpy(work_terminal.addr_str, extract_value(data, "ip").c_str());
|
strcpy(work_terminal.addr_str, extract_value(data, "ip").c_str());
|
||||||
strcpy(work_terminal.port, extract_value(data, "port").c_str());
|
strcpy(work_terminal.port, extract_value(data, "port").c_str());
|
||||||
strcpy(work_terminal.timestamp, extract_value(data, "updateTime").c_str());
|
strcpy(work_terminal.timestamp, extract_value(data, "updateTime").c_str());
|
||||||
@@ -11526,6 +11530,7 @@ void printTerminalDevMap(const QMap<QString, terminal_dev*>& terminal_dev_map) {
|
|||||||
<< ", Device Type:" << QString(dev->dev_type)
|
<< ", Device Type:" << QString(dev->dev_type)
|
||||||
<< ", Device Key:" << QString(dev->dev_key)
|
<< ", Device Key:" << QString(dev->dev_key)
|
||||||
<< ", Device Series:" << QString(dev->dev_series)
|
<< ", Device Series:" << QString(dev->dev_series)
|
||||||
|
<< ", Device processNo:" << QString(dev->processNo)
|
||||||
<< ", Address:" << QString(dev->addr_str)
|
<< ", Address:" << QString(dev->addr_str)
|
||||||
<< ", Port:" << QString(dev->port)
|
<< ", Port:" << QString(dev->port)
|
||||||
<< ", Timestamp:" << QString(dev->timestamp);
|
<< ", Timestamp:" << QString(dev->timestamp);
|
||||||
@@ -11636,6 +11641,7 @@ void printLedgerinshell(const ied_usr_t& ied_usr, QIODevice* outputDevice) {
|
|||||||
outputDevice->write("|-- dev_type: " + QByteArray(ied_usr.dev_type) + "\n");
|
outputDevice->write("|-- dev_type: " + QByteArray(ied_usr.dev_type) + "\n");
|
||||||
outputDevice->write("|-- dev_key: " + QByteArray(ied_usr.dev_key) + "\n");
|
outputDevice->write("|-- dev_key: " + QByteArray(ied_usr.dev_key) + "\n");
|
||||||
outputDevice->write("|-- dev_series: " + QByteArray(ied_usr.dev_series) + "\n");
|
outputDevice->write("|-- dev_series: " + QByteArray(ied_usr.dev_series) + "\n");
|
||||||
|
outputDevice->write("|-- dev_processNo: " + QByteArray(ied_usr.processNo) + "\n");
|
||||||
outputDevice->write("|-- dev_flag: " + QByteArray::number(ied_usr.dev_flag) + "\n");
|
outputDevice->write("|-- dev_flag: " + QByteArray::number(ied_usr.dev_flag) + "\n");
|
||||||
|
|
||||||
outputDevice->write("|-- last_call_wavelist_time: " + QByteArray::number(ied_usr.last_call_wavelist_time) + "\n");
|
outputDevice->write("|-- last_call_wavelist_time: " + QByteArray::number(ied_usr.last_call_wavelist_time) + "\n");
|
||||||
@@ -11745,6 +11751,28 @@ void ledger(const char* terminal_id, QIODevice* outputDevice) {
|
|||||||
}
|
}
|
||||||
pthread_mutex_unlock(&mtx);
|
pthread_mutex_unlock(&mtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//lnk20250210<31><30>ӡָ<D3A1><D6B8><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
void value_print(const char *variableName, QTcpSocket *clientSocket) {
|
||||||
|
char buffer[256]; // <20><><EFBFBD>ڴ洢<DAB4><E6B4A2><EFBFBD><EFBFBD>ֵ<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
// <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>ֵ
|
||||||
|
if (strcmp(variableName, "frontindex") == 0) {
|
||||||
|
sprintf(buffer, "frontindex = %d", g_front_seg_index); // <20><> int ת<><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||||
|
clientSocket->write(buffer); // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
|
||||||
|
} else if (strcmp(variableName, "iedcount") == 0) {
|
||||||
|
sprintf(buffer, "g_node->n_clients = %d, ied config count = %d", IED_COUNT);
|
||||||
|
clientSocket->write(buffer);
|
||||||
|
} else if (strcmp(variableName, "frontfun") == 0) {
|
||||||
|
sprintf(buffer, "frontfun = %s", subdir);
|
||||||
|
clientSocket->write(buffer);
|
||||||
|
} else {
|
||||||
|
clientSocket->write("Unknown variable name\n> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
clientSocket->flush();
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// <20><><EFBFBD><EFBFBD> JSON <20>ĺ<EFBFBD><C4BA><EFBFBD> <20><>ǰ<EFBFBD>ö<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD> JSON <20>ĺ<EFBFBD><C4BA><EFBFBD> <20><>ǰ<EFBFBD>ö<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
|
||||||
int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
|
int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
|
||||||
@@ -11854,6 +11882,7 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
|
|||||||
}
|
}
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>index<65><78><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ӧ<EFBFBD><D3A6>̨<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>پ<EFBFBD><D9BE>֣<EFBFBD><D6A3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>̨<EFBFBD>˲<EFBFBD><CBB2>жϽ<D0B6><CFBD>̺<EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>index<65><78><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ӧ<EFBFBD><D3A6>̨<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>پ<EFBFBD><D9BE>֣<EFBFBD><D6A3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>̨<EFBFBD>˲<EFBFBD><CBB2>жϽ<D0B6><CFBD>̺<EFBFBD>
|
||||||
|
#if 0
|
||||||
int base_size = 0;
|
int base_size = 0;
|
||||||
int remainder = 0;
|
int remainder = 0;
|
||||||
int start_index = 0;
|
int start_index = 0;
|
||||||
@@ -11873,6 +11902,9 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
|
|||||||
end_index = data_size;
|
end_index = data_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
int start_index = 0;
|
||||||
|
int end_index = data_size;
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Χ<EFBFBD>ڵ<EFBFBD>Ԫ<EFBFBD><D4AA>
|
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Χ<EFBFBD>ڵ<EFBFBD>Ԫ<EFBFBD><D4AA>
|
||||||
for (int i = start_index; i < end_index; ++i) {
|
for (int i = start_index; i < end_index; ++i) {
|
||||||
@@ -11930,6 +11962,11 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
|
|||||||
if (series && series->type == cJSON_String) strncpy(dev->dev_series, series->valuestring, sizeof(dev->dev_series) - 1);
|
if (series && series->type == cJSON_String) strncpy(dev->dev_series, series->valuestring, sizeof(dev->dev_series) - 1);
|
||||||
else strncpy(dev->dev_series, "N/A", sizeof(dev->dev_series) - 1);
|
else strncpy(dev->dev_series, "N/A", sizeof(dev->dev_series) - 1);
|
||||||
|
|
||||||
|
//lnk20250210̨<30>˽<EFBFBD><CBBD>̺<EFBFBD>
|
||||||
|
cJSON* processNo = cJSON_GetObjectItem(item, "processNo"); // processNoתΪ<D7AA>ַ<EFBFBD><D6B7><EFBFBD>
|
||||||
|
if (processNo && processNo->type == cJSON_Number) snprintf(dev->processNo, sizeof(dev->processNo), "%d", processNo->valueint);
|
||||||
|
else strncpy(dev->processNo, "N/A", sizeof(dev->processNo) - 1);
|
||||||
|
|
||||||
cJSON* port = cJSON_GetObjectItem(item, "port"); // port
|
cJSON* port = cJSON_GetObjectItem(item, "port"); // port
|
||||||
if (port && port->type == cJSON_String) strncpy(dev->port, port->valuestring, sizeof(dev->port) - 1);
|
if (port && port->type == cJSON_String) strncpy(dev->port, port->valuestring, sizeof(dev->port) - 1);
|
||||||
else strncpy(dev->port, "N/A", sizeof(dev->port) - 1);
|
else strncpy(dev->port, "N/A", sizeof(dev->port) - 1);
|
||||||
@@ -11992,10 +12029,16 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
|
|||||||
terminal_dev_map->remove(key);
|
terminal_dev_map->remove(key);
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> terminal_dev <20><><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> terminal_dev <20><><EFBFBD><EFBFBD>
|
||||||
terminal_dev_map->insert(key, dev);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊֻ<EFBFBD>н<EFBFBD><EFBFBD>̺<EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>index<EFBFBD><EFBFBD>¼<EFBFBD>뵱ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(atoi(dev->processNo) == g_front_seg_index){//lnk20250210ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD>
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
std::cout<< "process num match" << std::endl;
|
||||||
|
terminal_dev_map->insert(key, dev);}//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊֻ<CEAA>н<EFBFBD><D0BD>̺<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>index<65><78>¼<EFBFBD>뵱ǰ<EBB5B1><C7B0><EFBFBD><EFBFBD>
|
||||||
} else {
|
} else {
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> terminal_dev <20><><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> terminal_dev <20><><EFBFBD><EFBFBD>
|
||||||
terminal_dev_map->insert(key, dev);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊֻ<EFBFBD>н<EFBFBD><EFBFBD>̺<EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>index<EFBFBD><EFBFBD>¼<EFBFBD>뵱ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(atoi(dev->processNo) == g_front_seg_index){//lnk20250210ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD>
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
std::cout<< "process num match" << std::endl;
|
||||||
|
terminal_dev_map->insert(key, dev);}//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊֻ<CEAA>н<EFBFBD><D0BD>̺<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>index<65><78>¼<EFBFBD>뵱ǰ<EBB5B1><C7B0><EFBFBD><EFBFBD>
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//std::cout << "i = " << i << std::endl;
|
//std::cout << "i = " << i << std::endl;
|
||||||
//std::cout << "terminal_dev_map.size:" << terminal_dev_map->size() << std::endl;
|
//std::cout << "terminal_dev_map.size:" << terminal_dev_map->size() << std::endl;
|
||||||
@@ -12186,6 +12229,10 @@ int parse_device_cfg_web()
|
|||||||
char dev_series[255];
|
char dev_series[255];
|
||||||
char addr_str[64];
|
char addr_str[64];
|
||||||
char port_char[64];
|
char port_char[64];
|
||||||
|
|
||||||
|
//lnk20250210<31><30><EFBFBD>ӽ<EFBFBD><D3BD>̺<EFBFBD>
|
||||||
|
char processNo[64];
|
||||||
|
|
||||||
otl_datetime timestamp;
|
otl_datetime timestamp;
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
@@ -12208,6 +12255,7 @@ int parse_device_cfg_web()
|
|||||||
strncpy(dev_series, value->dev_series, sizeof(dev_series) - 1);
|
strncpy(dev_series, value->dev_series, sizeof(dev_series) - 1);
|
||||||
strncpy(addr_str, value->addr_str, sizeof(addr_str) - 1);
|
strncpy(addr_str, value->addr_str, sizeof(addr_str) - 1);
|
||||||
strncpy(port_char, value->port, sizeof(port_char) - 1);
|
strncpy(port_char, value->port, sizeof(port_char) - 1);
|
||||||
|
strncpy(processNo, value->processNo, sizeof(processNo) - 1);//<2F><><EFBFBD>̺<EFBFBD>
|
||||||
timestamp = parseTimestamp(value->timestamp);
|
timestamp = parseTimestamp(value->timestamp);
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>
|
||||||
@@ -12270,6 +12318,13 @@ int parse_device_cfg_web()
|
|||||||
apr_snprintf(ied_usr->dev_type, sizeof(ied_usr->dev_type), "%s", dev_type);//dev_type
|
apr_snprintf(ied_usr->dev_type, sizeof(ied_usr->dev_type), "%s", dev_type);//dev_type
|
||||||
cout << "ied_usr->dev_type:" << ied_usr->dev_type << endl;
|
cout << "ied_usr->dev_type:" << ied_usr->dev_type << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//lnk20250210̨<30>˽<EFBFBD><CBBD>̺<EFBFBD>
|
||||||
|
if (processNo != NULL) {
|
||||||
|
apr_snprintf(ied_usr->processNo, sizeof(ied_usr->processNo), "%s", processNo);//processNo
|
||||||
|
cout << "ied_usr->processNo:" << ied_usr->processNo << endl;
|
||||||
|
}
|
||||||
|
|
||||||
if (dev_series != NULL) {
|
if (dev_series != NULL) {
|
||||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", dev_series);//DEV_Series
|
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", dev_series);//DEV_Series
|
||||||
cout << "defalut dev_series:" << ied_usr->dev_series << endl;
|
cout << "defalut dev_series:" << ied_usr->dev_series << endl;
|
||||||
@@ -14454,18 +14509,11 @@ int parse_rpt_log_ini_one(ied_t* ied)
|
|||||||
|
|
||||||
} 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>
|
||||||
|
|
||||||
//lnk20250208<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <EFBFBD><EFBFBD><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;
|
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);//apr_palloc ֻ<>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̶<EFBFBD><CCB6><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ڴ<EFBFBD><DAB4>飬<EFBFBD><E9A3AC>û<EFBFBD><C3BB><EFBFBD>ṩֱ<E1B9A9>ӵĻ<D3B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>֤<EFBFBD><D6A4><EFBFBD>Ŀռ<C4BF><D5BC>Ƿ<EFBFBD><C7B7>ѱ<EFBFBD>ʹ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>䵽<EFBFBD><E4B5BD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ֱ<EFBFBD>Ӹ<EFBFBD><D3B8>Ǽ<EFBFBD><C7BC><EFBFBD>
|
||||||
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>
|
||||||
|
|||||||
@@ -1197,6 +1197,10 @@ std::string prepare_update(const std::string& code_str, const terminal& json_dat
|
|||||||
add_indent(xmlStream, indentLevel);
|
add_indent(xmlStream, indentLevel);
|
||||||
xmlStream << "<series>" << json_data.dev_series << "</series>" << std::endl;
|
xmlStream << "<series>" << json_data.dev_series << "</series>" << std::endl;
|
||||||
|
|
||||||
|
//lnk20250210
|
||||||
|
add_indent(xmlStream, indentLevel);
|
||||||
|
xmlStream << "<processNo>" << json_data.processNo << "</processNo>" << std::endl;
|
||||||
|
|
||||||
add_indent(xmlStream, indentLevel);
|
add_indent(xmlStream, indentLevel);
|
||||||
xmlStream << "<devKey>" << json_data.dev_key << "</devKey>" << std::endl;
|
xmlStream << "<devKey>" << json_data.dev_key << "</devKey>" << std::endl;
|
||||||
|
|
||||||
@@ -1426,6 +1430,11 @@ void parse_control(const std::string& json_str, const std::string& output_dir) {
|
|||||||
else
|
else
|
||||||
std::strncpy(json_data.dev_series, "N/A", sizeof(json_data.dev_series) - 1);
|
std::strncpy(json_data.dev_series, "N/A", sizeof(json_data.dev_series) - 1);
|
||||||
|
|
||||||
|
//lnk20250210̨<30>˽<EFBFBD><CBBD>̺<EFBFBD>
|
||||||
|
cJSON* processNo = cJSON_GetObjectItem(item, "processNo"); // processNoתΪ<D7AA>ַ<EFBFBD><D6B7><EFBFBD>
|
||||||
|
if (processNo && processNo->type == cJSON_Number) snprintf(json_data.processNo, sizeof(json_data.processNo), "%d", processNo->valueint);
|
||||||
|
else strncpy(json_data.processNo, "N/A", sizeof(json_data.processNo) - 1);
|
||||||
|
|
||||||
cJSON* ip = cJSON_GetObjectItem(item, "ip"); // addr_str
|
cJSON* ip = cJSON_GetObjectItem(item, "ip"); // addr_str
|
||||||
if (ip && ip->type == cJSON_String)
|
if (ip && ip->type == cJSON_String)
|
||||||
std::strncpy(json_data.addr_str, ip->valuestring, sizeof(json_data.addr_str) - 1);
|
std::strncpy(json_data.addr_str, ip->valuestring, sizeof(json_data.addr_str) - 1);
|
||||||
|
|||||||
126
json/save2json.h
126
json/save2json.h
@@ -44,6 +44,7 @@ extern "C" {
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
extern int G_TEST_NUM;
|
extern int G_TEST_NUM;
|
||||||
extern void ledger(const char* terminal_id = NULL,QIODevice* outputDevice = NULL);
|
extern void ledger(const char* terminal_id = NULL,QIODevice* outputDevice = NULL);
|
||||||
|
extern void value_print(const char *variableName, QTcpSocket *clientSocket);
|
||||||
extern int TEST_PORT;
|
extern int TEST_PORT;
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -107,24 +108,29 @@ class Worker : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Worker(QObject *parent = NULL) : QObject(parent), server(NULL), TEST_NUM(G_TEST_NUM) {}
|
Worker(QObject *parent = NULL) : QObject(parent), server(NULL), TEST_NUM(G_TEST_NUM) {
|
||||||
|
timer = NULL;
|
||||||
|
}
|
||||||
~Worker() {
|
~Worker() {
|
||||||
if (server) {
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
||||||
server->close();
|
stopServer();
|
||||||
delete server;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void startServer() {
|
void startServer() {
|
||||||
server = new QTcpServer();
|
if (server) {
|
||||||
|
qDebug() << "Server is already running!";
|
||||||
|
return; // <20><>ֹ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
|
||||||
|
// <20><><EFBFBD><EFBFBD> QTcpServer <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
server = new QTcpServer(this);
|
||||||
connect(server, SIGNAL(newConnection()), this, SLOT(onNewConnection()));
|
connect(server, SIGNAL(newConnection()), this, SLOT(onNewConnection()));
|
||||||
|
|
||||||
|
// <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||||
if (!server->listen(QHostAddress::Any, TEST_PORT)) {
|
if (!server->listen(QHostAddress::Any, TEST_PORT)) {
|
||||||
std::cout << "Server failed to start!" << std::endl;
|
std::cout << "Server failed to start!" << std::endl;
|
||||||
qDebug() << "Server failed to start!";
|
qDebug() << "Server failed to start!";
|
||||||
delete server;
|
|
||||||
server = NULL;
|
|
||||||
emit serverError();
|
emit serverError();
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
@@ -135,12 +141,30 @@ public slots:
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||||
timer = new QTimer(this);
|
timer = new QTimer(this);
|
||||||
connect(timer, SIGNAL(timeout()), this, SLOT(doPeriodicTask()));
|
connect(timer, SIGNAL(timeout()), this, SLOT(doPeriodicTask()));
|
||||||
timer->start(60000); // ÿ60<36>봥<EFBFBD><EBB4A5>һ<EFBFBD><D2BB>
|
timer->start(60000); // ÿ60<36>봥<EFBFBD><EBB4A5>һ<EFBFBD><D2BB>
|
||||||
|
|
||||||
std::cout << "Timer started, event loop running in thread: " << QThread::currentThreadId() << std::endl;
|
std::cout << "Timer started, event loop running in thread: " << QThread::currentThreadId() << std::endl;
|
||||||
qDebug() << "Timer started, event loop running in thread:" << QThread::currentThreadId();
|
qDebug() << "Timer started, event loop running in thread:" << QThread::currentThreadId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void stopServer() {
|
||||||
|
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
||||||
|
if (server) {
|
||||||
|
server->close();
|
||||||
|
delete server;
|
||||||
|
server = NULL;
|
||||||
|
qDebug() << "Server stopped.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1>
|
||||||
|
if (timer) {
|
||||||
|
timer->stop();
|
||||||
|
delete timer;
|
||||||
|
timer = NULL;
|
||||||
|
qDebug() << "Timer stopped.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void setTestNum(int num) {
|
void setTestNum(int num) {
|
||||||
QMutexLocker locker(&mutex);
|
QMutexLocker locker(&mutex);
|
||||||
TEST_NUM = num;
|
TEST_NUM = num;
|
||||||
@@ -167,6 +191,7 @@ private slots:
|
|||||||
std::cout << "New connection established!\n";
|
std::cout << "New connection established!\n";
|
||||||
|
|
||||||
connect(clientSocket, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
|
connect(clientSocket, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
|
||||||
|
connect(clientSocket, SIGNAL(disconnected()), clientSocket, SLOT(deleteLater())); // <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
// <20><><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
// <20><><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
||||||
if (clientSocket) {
|
if (clientSocket) {
|
||||||
@@ -178,12 +203,10 @@ private slots:
|
|||||||
|
|
||||||
void onReadyRead() {
|
void onReadyRead() {
|
||||||
QTcpSocket *clientSocket = qobject_cast<QTcpSocket *>(sender());
|
QTcpSocket *clientSocket = qobject_cast<QTcpSocket *>(sender());
|
||||||
std::cout << "onReadyRead\n";
|
|
||||||
if (!clientSocket) {
|
if (!clientSocket) {
|
||||||
std::cout << "Invalid socket\n";
|
std::cout << "Invalid socket\n";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
std::cout << "read all\n";
|
|
||||||
|
|
||||||
QByteArray data = clientSocket->readAll();
|
QByteArray data = clientSocket->readAll();
|
||||||
QString command = QString::fromUtf8(data).trimmed(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EEB2A2><C8A5>ǰ<EFBFBD><C7B0><EFBFBD>ո<EFBFBD>
|
QString command = QString::fromUtf8(data).trimmed(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EEB2A2><C8A5>ǰ<EFBFBD><C7B0><EFBFBD>ո<EFBFBD>
|
||||||
@@ -191,16 +214,35 @@ private slots:
|
|||||||
qDebug() << "Received command:" << command;
|
qDebug() << "Received command:" << command;
|
||||||
std::cout << "Received command: " << command.toStdString() << "\n";
|
std::cout << "Received command: " << command.toStdString() << "\n";
|
||||||
|
|
||||||
|
// <20>洢<EFBFBD><E6B4A2>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||||
|
if (!command.isEmpty() && (commandHistory.isEmpty() || command != commandHistory.last())) {
|
||||||
|
commandHistory.append(command);
|
||||||
|
historyIndex = commandHistory.size(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
|
||||||
// <20><><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7>͡<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롱<EFBFBD><EBA1B1><EFBFBD><EFBFBD>
|
// <20><><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7>͡<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롱<EFBFBD><EBA1B1><EFBFBD><EFBFBD>
|
||||||
clientSocket->write("Received command\n> ");
|
clientSocket->write("Received command\n> ");
|
||||||
clientSocket->flush();
|
clientSocket->flush();
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʾ<EFBFBD><CABE>
|
|
||||||
clientSocket->write("test_shell> ");
|
clientSocket->write("test_shell> ");
|
||||||
clientSocket->flush(); // ȷ<><C8B7><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
clientSocket->flush(); // ȷ<><C8B7><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
|
|
||||||
|
// <20><><EFBFBD><EFBFBD> help <20><><EFBFBD><EFBFBD>
|
||||||
|
if (command == "help") {
|
||||||
|
QString helpText = "Available commands:\n";
|
||||||
|
helpText += "TEST_NUM=<num> - Set the TEST_NUM\n";
|
||||||
|
helpText += "rc - Execute rocketmq_test_rc\n";
|
||||||
|
helpText += "rt - Execute rocketmq_test_rt\n";
|
||||||
|
helpText += "ud - Execute rocketmq_test_ud\n";
|
||||||
|
helpText += "set - Execute rocketmq_test_set\n";
|
||||||
|
helpText += "ledger <id> - Execute ledger with optional terminal_id\n";
|
||||||
|
helpText += "value <valuename> - Execute value print with valuename : iedcount frontfun frontindex\n";
|
||||||
|
helpText += "exit - Exit the shell\n";
|
||||||
|
helpText += "help - Show this help message\n";
|
||||||
|
clientSocket->write(helpText.toUtf8());
|
||||||
|
clientSocket->flush();
|
||||||
|
}
|
||||||
// <20><><EFBFBD><EFBFBD> TEST_NUM
|
// <20><><EFBFBD><EFBFBD> TEST_NUM
|
||||||
if (command.startsWith("TEST_NUM=")) {
|
else if (command.startsWith("TEST_NUM=")) {
|
||||||
bool ok;
|
bool ok;
|
||||||
int num = command.mid(9).toInt(&ok); // <20><>ȡ<EFBFBD>Ⱥź<C8BA><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
|
int num = command.mid(9).toInt(&ok); // <20><>ȡ<EFBFBD>Ⱥź<C8BA><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
|
||||||
if (ok) {
|
if (ok) {
|
||||||
@@ -262,7 +304,57 @@ private slots:
|
|||||||
clientSocket->write("Executed ledger without parameters\n> ");
|
clientSocket->write("Executed ledger without parameters\n> ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (command.startsWith("value")) {
|
||||||
|
std::cout << "Executing value()" << std::endl;
|
||||||
|
|
||||||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
QStringList parts = command.split(" "); // <20><><EFBFBD>ݿո<DDBF><D5B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
if (parts.size() > 1) { // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
QString variableName = parts[1];
|
||||||
|
|
||||||
|
std::cout << "Calling value() with variable name: " << variableName.toStdString() << std::endl;
|
||||||
|
|
||||||
|
// <20><><EFBFBD><EFBFBD> value() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
|
value_print(variableName.toStdString().c_str(), clientSocket); // <20><><EFBFBD><EFBFBD> value() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
|
|
||||||
|
clientSocket->write("Executed value with variable name: " + variableName.toUtf8() + "\n> ");
|
||||||
|
} else {
|
||||||
|
std::cout << "Calling value without parameters" << std::endl;
|
||||||
|
|
||||||
|
// <20><>ʾ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
clientSocket->write("Please provide a variable name\n> ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||||
|
else if (command == "up" || command == "down") {
|
||||||
|
// <20><><EFBFBD>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EEB4A6>
|
||||||
|
if (command == "up") {
|
||||||
|
// <20>ϼ<EFBFBD>ͷ<EFBFBD><CDB7>ѡ<EFBFBD><D1A1>ǰһ<C7B0><D2BB><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||||
|
if (historyIndex > 0) {
|
||||||
|
historyIndex--;
|
||||||
|
}
|
||||||
|
} else if (command == "down") {
|
||||||
|
// <20>¼<EFBFBD>ͷ<EFBFBD><CDB7>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||||
|
if (historyIndex < commandHistory.size() - 1) {
|
||||||
|
historyIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||||
|
if (historyIndex >= 0 && historyIndex < commandHistory.size()) {
|
||||||
|
clientSocket->write(commandHistory[historyIndex].toUtf8());
|
||||||
|
} else {
|
||||||
|
clientSocket->write("No history available\n> ");
|
||||||
|
}
|
||||||
|
clientSocket->flush();
|
||||||
|
}
|
||||||
|
// <20><><EFBFBD><EFBFBD> exit <20><><EFBFBD><EFBFBD>
|
||||||
|
else if (command == "exit") {
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>رտͻ<D5BF><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
clientSocket->write("Goodbye! Exiting shell...\n");
|
||||||
|
clientSocket->flush();
|
||||||
|
clientSocket->disconnectFromHost(); // <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
clientSocket->waitForDisconnected(); // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>ӶϿ<D3B6>
|
||||||
|
}
|
||||||
// <20><><EFBFBD><EFBFBD>δ֪<CEB4><D6AA><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>δ֪<CEB4><D6AA><EFBFBD><EFBFBD>
|
||||||
else {
|
else {
|
||||||
clientSocket->write("Unknown command\n> ");
|
clientSocket->write("Unknown command\n> ");
|
||||||
@@ -275,12 +367,15 @@ signals:
|
|||||||
void serverError();
|
void serverError();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QList<QString> commandHistory; // <20>洢<EFBFBD><E6B4A2>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||||
|
int historyIndex = -1; // <20><>ǰ<EFBFBD><C7B0>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
QTcpServer *server;
|
QTcpServer *server;
|
||||||
QTimer *timer;
|
QTimer *timer;
|
||||||
int TEST_NUM;
|
int TEST_NUM;
|
||||||
QMutex mutex;
|
QMutex mutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//lnk20241213
|
//lnk20241213
|
||||||
class mqconsumerThread : public QThread
|
class mqconsumerThread : public QThread
|
||||||
{
|
{
|
||||||
@@ -330,6 +425,7 @@ struct terminal //
|
|||||||
char dev_type[64];
|
char dev_type[64];
|
||||||
char dev_key[255];
|
char dev_key[255];
|
||||||
char dev_series[255];
|
char dev_series[255];
|
||||||
|
char processNo[64]; //lnk20250210<31><30><EFBFBD>̺<EFBFBD>
|
||||||
char addr_str[64];
|
char addr_str[64];
|
||||||
char port[64];
|
char port[64];
|
||||||
char timestamp[64];
|
char timestamp[64];
|
||||||
|
|||||||
@@ -330,6 +330,9 @@ int main(int argc, const char **argv)
|
|||||||
pthread_mutex_lock(&mtx);//<2F><><EFBFBD>̶߳<DFB3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ȡ̨<C8A1>˼<EFBFBD><CBBC><EFBFBD>
|
pthread_mutex_lock(&mtx);//<2F><><EFBFBD>̶߳<DFB3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ȡ̨<C8A1>˼<EFBFBD><CBBC><EFBFBD>
|
||||||
if (!G_TEST_FLAG && g_front_num_count >= 30 && g_onlyIP[0] == 0 && g_node->n_clients>10) {//30<33><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˴<EFBFBD><CBB4><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD>ն<EFBFBD>
|
if (!G_TEST_FLAG && g_front_num_count >= 30 && g_onlyIP[0] == 0 && g_node->n_clients>10) {//30<33><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˴<EFBFBD><CBB4><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD>ն<EFBFBD>
|
||||||
MVL_LOG_ACSE0("MYLOG: g_front_num_count>=20, so exit to restart ");
|
MVL_LOG_ACSE0("MYLOG: g_front_num_count>=20, so exit to restart ");
|
||||||
|
|
||||||
|
pthread_mutex_unlock(&mtx);
|
||||||
|
|
||||||
apr_sleep(apr_time_from_sec(10));
|
apr_sleep(apr_time_from_sec(10));
|
||||||
exit(-1039);
|
exit(-1039);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -922,7 +922,7 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
|||||||
//2-<2D><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>///////////////////////////////////
|
//2-<2D><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>///////////////////////////////////
|
||||||
ied = g_node->clients[new_client_count - 1];//<2F>ն<EFBFBD>̨<EFBFBD><CCA8>ָ<EFBFBD>붨<EFBFBD><EBB6A8><EFBFBD><EFBFBD>ied<65><64><EFBFBD>鵱ǰλ<C7B0>õĺ<C3B5>һλ
|
ied = g_node->clients[new_client_count - 1];//<2F>ն<EFBFBD>̨<EFBFBD><CCA8>ָ<EFBFBD>붨<EFBFBD><EBB6A8><EFBFBD><EFBFBD>ied<65><64><EFBFBD>鵱ǰλ<C7B0>õĺ<C3B5>һλ
|
||||||
|
|
||||||
terminal_index = new_client_count - 1;//<2F>µ<EFBFBD>̨<EFBFBD><CCA8><EFBFBD>ն<EFBFBD>
|
terminal_index = new_client_count;//<2F>µ<EFBFBD>̨<EFBFBD><CCA8><EFBFBD>ն<EFBFBD>
|
||||||
|
|
||||||
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));
|
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));
|
||||||
ied->usr_ext = ied_usr;//<2F>ڴ<EFBFBD><DAB4>ҵ<EFBFBD>ied<65><64>
|
ied->usr_ext = ied_usr;//<2F>ڴ<EFBFBD><DAB4>ҵ<EFBFBD>ied<65><64>
|
||||||
|
|||||||
@@ -327,6 +327,7 @@ struct ied_usr_t{
|
|||||||
char terminal_code[256];//CZY 2023-08-30 <20>ն˱<D5B6><CBB1><EFBFBD>
|
char terminal_code[256];//CZY 2023-08-30 <20>ն˱<D5B6><CBB1><EFBFBD>
|
||||||
int update_flag;//CZY 2023-08-20 ̨<>˸<EFBFBD><CBB8>±<EFBFBD>־ 0:keep 2:delete 4:update 8:add
|
int update_flag;//CZY 2023-08-20 ̨<>˸<EFBFBD><CBB8>±<EFBFBD>־ 0:keep 2:delete 4:update 8:add
|
||||||
|
|
||||||
|
char processNo[64];//̨<>˽<EFBFBD><CBBD>̺<EFBFBD>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user