finish develop
This commit is contained in:
@@ -1038,11 +1038,11 @@ void init_config() {
|
||||
//20241212lnk<6E><6B><EFBFBD>Ӷ<EFBFBD>ǰ<EFBFBD><C7B0>
|
||||
if (g_front_seg_index != 0 && g_front_seg_num != 0) {
|
||||
MULTIPLE_NODE_FLAG = 1;
|
||||
std::cout << "<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" << g_front_seg_index << std::endl;
|
||||
std::cout << "this is multiple process of index:" << g_front_seg_index << std::endl;
|
||||
}
|
||||
else{
|
||||
MULTIPLE_NODE_FLAG = 0;
|
||||
std::cout << "<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" << std::endl;
|
||||
std::cout << "this is single process" << std::endl;
|
||||
}
|
||||
|
||||
//20250109lnk<6E><6B><EFBFBD>ӽ<EFBFBD><D3BD>̲<EFBFBD><CCB2>Դ<EFBFBD>ӡ<EFBFBD>˿<EFBFBD>
|
||||
@@ -5238,7 +5238,7 @@ int SendMessageToWeb(int socketClient, int iErrorCode) //
|
||||
sendLength = send(socketClient, strSendJson.c_str(), strSendJson.length() + 1, 0);
|
||||
if (-1 == sendLength)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>%d<><64><EFBFBD><EFBFBD>[%d]<5D><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><F3A3ACB4><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>%s\n", socketClient, iErrorCode, strSendJson.c_str());
|
||||
printf("server to client[%d] send[%d] message error,error message:%s\n", socketClient, iErrorCode, strSendJson.c_str());
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -11676,110 +11676,106 @@ void printLedgerinshell(const ied_usr_t& ied_usr, QIODevice* outputDevice) {
|
||||
ied_t* ied;
|
||||
ied = find_ied_from_dev_idx(ied_usr.dev_idx);
|
||||
|
||||
outputDevice->write("------------------------------------\n");
|
||||
outputDevice->write("|-- terminal_id: " + QByteArray(ied_usr.terminal_id) + "\n");
|
||||
outputDevice->write("|-- dev_index: " + QByteArray::number(ied_usr.dev_idx) + "\n");
|
||||
outputDevice->write("|-- dev_cpucount: " + QByteArray::number(ied->cpucount) + "\n");
|
||||
outputDevice->write("|-- dev_ip: " + QByteArray(ied->channel[0].addr_str) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("------------------------------------\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- terminal_id: " + QByteArray(ied_usr.terminal_id) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_index: " + QByteArray::number(ied_usr.dev_idx) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_cpucount: " + QByteArray::number(ied->cpucount) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_ip: " + QByteArray(ied->channel[0].addr_str) + "\n");
|
||||
char portStr[20]; // <20><><EFBFBD>ڴ<EFBFBD><DAB4>Ŷ˿ںŵ<DABA><C5B5>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
sprintf(portStr, "%u", ied->channel[0].port); // <20><><EFBFBD>˿ں<CBBF>תΪ<D7AA>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
outputDevice->write("|-- dev_port: " + QByteArray(portStr) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_port: " + QByteArray(portStr) + "\n");
|
||||
|
||||
char statusStr[20]; // <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>״̬<D7B4><CCAC><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
sprintf(statusStr, "%u", ied->channel[0].status); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬תΪ<D7AA>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
outputDevice->write("|-- dev_connect_status: " + QByteArray(statusStr) + "\n");
|
||||
|
||||
outputDevice->write("|-- dev_type: " + QByteArray(ied_usr.dev_type) + "\n");
|
||||
|
||||
|
||||
outputDevice->write("|-- dev_key: " + QByteArray(ied_usr.dev_key) + "\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("|-- last_call_wavelist_time: " + QByteArray::number(ied_usr.last_call_wavelist_time) + "\n");
|
||||
|
||||
outputDevice->write("|-- org_name: " + QByteArray(ied_usr.org_name) + "\n");
|
||||
outputDevice->write("|-- maint_name: " + QByteArray(ied_usr.maint_name) + "\n");
|
||||
outputDevice->write("|-- station_name: " + QByteArray(ied_usr.station_name) + "\n");
|
||||
outputDevice->write("|-- tmnl_factory: " + QByteArray(ied_usr.tmnl_factory) + "\n");
|
||||
outputDevice->write("|-- time: " + QByteArray::number(ied_usr.time) + "\n");
|
||||
outputDevice->write("|-- tmnl_status: " + QByteArray(ied_usr.tmnl_status) + "\n");
|
||||
outputDevice->write("|-- terminal_code: " + QByteArray(ied_usr.terminal_code) + "\n");
|
||||
outputDevice->write("|-- update_flag: " + QByteArray::number(ied_usr.update_flag) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_connect_status: " + QByteArray(statusStr) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_type: " + QByteArray(ied_usr.dev_type) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_key: " + QByteArray(ied_usr.dev_key) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_series: " + QByteArray(ied_usr.dev_series) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_processNo: " + QByteArray(ied_usr.processNo) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- dev_flag: " + QByteArray::number(ied_usr.dev_flag) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- last_call_wavelist_time: " + QByteArray::number(ied_usr.last_call_wavelist_time) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- org_name: " + QByteArray(ied_usr.org_name) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- maint_name: " + QByteArray(ied_usr.maint_name) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- station_name: " + QByteArray(ied_usr.station_name) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- tmnl_factory: " + QByteArray(ied_usr.tmnl_factory) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- time: " + QByteArray::number(ied_usr.time) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- tmnl_status: " + QByteArray(ied_usr.tmnl_status) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- terminal_code: " + QByteArray(ied_usr.terminal_code) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- update_flag: " + QByteArray::number(ied_usr.update_flag) + "\n");
|
||||
|
||||
// <20><>ӡÿ<D3A1><C3BF>LD_info<66><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
if (strcmp(ied_usr.LD_info[i].mp_id, "") != 0) {
|
||||
outputDevice->write("|-- LD_info[" + QByteArray::number(i) + "]:\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("|-- LD_info[" + QByteArray::number(i) + "]:\n");
|
||||
|
||||
// name
|
||||
outputDevice->write(" |-- name: " + QByteArray(ied_usr.LD_info[i].name) + "\n");
|
||||
outputDevice->write(" |-- LD_name: "
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- name: " + QByteArray(ied_usr.LD_info[i].name) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- LD_name: "
|
||||
+ (strlen(ied_usr.LD_info[i].LD_name) == 0 ? QByteArray("NA") : QByteArray(ied_usr.LD_info[i].LD_name))
|
||||
+ "\n");
|
||||
outputDevice->write(" |-- read_flag: " + QByteArray::number(ied_usr.LD_info[i].read_flag) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- read_flag: " + QByteArray::number(ied_usr.LD_info[i].read_flag) + "\n");
|
||||
|
||||
// index
|
||||
outputDevice->write(" |-- line_id: " + QByteArray::number(ied_usr.LD_info[i].line_id) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- line_id: " + QByteArray::number(ied_usr.LD_info[i].line_id) + "\n");
|
||||
|
||||
// monitorledger
|
||||
outputDevice->write(" |-- mp_id: " + QByteArray(ied_usr.LD_info[i].mp_id) + "\n");
|
||||
outputDevice->write(" |-- terminal_code: " + QByteArray(ied_usr.LD_info[i].terminal_code) + "\n");
|
||||
outputDevice->write(" |-- voltage_level: " + QByteArray(ied_usr.LD_info[i].voltage_level) + "\n");
|
||||
outputDevice->write(" |-- v_wiring_type: " + QByteArray(ied_usr.LD_info[i].v_wiring_type) + "\n");
|
||||
outputDevice->write(" |-- time: " + QByteArray::number(ied_usr.LD_info[i].time) + "\n");
|
||||
outputDevice->write(" |-- update_flag: " + QByteArray::number(ied_usr.LD_info[i].update_flag) + "\n");
|
||||
outputDevice->write(" |-- monitor_status: " + QByteArray(ied_usr.LD_info[i].monitor_status) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- mp_id: " + QByteArray(ied_usr.LD_info[i].mp_id) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- terminal_code: " + QByteArray(ied_usr.LD_info[i].terminal_code) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- voltage_level: " + QByteArray(ied_usr.LD_info[i].voltage_level) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- v_wiring_type: " + QByteArray(ied_usr.LD_info[i].v_wiring_type) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- time: " + QByteArray::number(ied_usr.LD_info[i].time) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- update_flag: " + QByteArray::number(ied_usr.LD_info[i].update_flag) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- monitor_status: " + QByteArray(ied_usr.LD_info[i].monitor_status) + "\n");
|
||||
|
||||
// count<6E>ݲ<EFBFBD><DDB2><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||||
outputDevice->write(" |-- rptcount: " + QByteArray::number(ied_usr.LD_info[i].rptcount) + "\n");
|
||||
outputDevice->write(" |-- logcount: " + QByteArray::number(ied_usr.LD_info[i].logcount) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- rptcount: " + QByteArray::number(ied_usr.LD_info[i].rptcount) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- logcount: " + QByteArray::number(ied_usr.LD_info[i].logcount) + "\n");
|
||||
|
||||
// rpt
|
||||
outputDevice->write(" |-- rptRecvFlag: " + QByteArray::number(ied_usr.LD_info[i].rptRecvFlag) + "\n");
|
||||
outputDevice->write(" |-- rptRecvCheckFlag: " + QByteArray::number(ied_usr.LD_info[i].rptRecvCheckFlag) + "\n");
|
||||
outputDevice->write(" |-- rptPstRecvFlag: " + QByteArray::number(ied_usr.LD_info[i].rptPstRecvFlag) + "\n");
|
||||
outputDevice->write(" |-- rptPstRecvCheckFlag: " + QByteArray::number(ied_usr.LD_info[i].rptPstRecvCheckFlag) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- rptRecvFlag: " + QByteArray::number(ied_usr.LD_info[i].rptRecvFlag) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- rptRecvCheckFlag: " + QByteArray::number(ied_usr.LD_info[i].rptRecvCheckFlag) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- rptPstRecvFlag: " + QByteArray::number(ied_usr.LD_info[i].rptPstRecvFlag) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- rptPstRecvCheckFlag: " + QByteArray::number(ied_usr.LD_info[i].rptPstRecvCheckFlag) + "\n");
|
||||
|
||||
// rtdata
|
||||
outputDevice->write(" |-- real_data: " + QByteArray::number(ied_usr.LD_info[i].real_data) + "\n");
|
||||
outputDevice->write(" |-- soe_data: " + QByteArray::number(ied_usr.LD_info[i].soe_data) + "\n");
|
||||
outputDevice->write(" |-- limit: " + QByteArray::number(ied_usr.LD_info[i].limit) + "\n");
|
||||
outputDevice->write(" |-- count: " + QByteArray::number(ied_usr.LD_info[i].count) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- real_data: " + QByteArray::number(ied_usr.LD_info[i].real_data) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- soe_data: " + QByteArray::number(ied_usr.LD_info[i].soe_data) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- limit: " + QByteArray::number(ied_usr.LD_info[i].limit) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- count: " + QByteArray::number(ied_usr.LD_info[i].count) + "\n");
|
||||
|
||||
// RDRE
|
||||
outputDevice->write(" |-- RDRE_FltNum: " + QByteArray::number(ied_usr.LD_info[i].RDRE_FltNum) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- RDRE_FltNum: " + QByteArray::number(ied_usr.LD_info[i].RDRE_FltNum) + "\n");
|
||||
for (int j = 0; j < 256; ++j) {
|
||||
if (ied_usr.LD_info[i].FltNum[j] != 0) {
|
||||
outputDevice->write(" |-- FltNum[" + QByteArray::number(j) + "]: "
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- FltNum[" + QByteArray::number(j) + "]: "
|
||||
+ QByteArray::number(ied_usr.LD_info[i].FltNum[j]) + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
// QVVR
|
||||
outputDevice->write(" |-- qvvr_idx: " + QByteArray::number(ied_usr.LD_info[i].qvvr_idx) + "\n");
|
||||
outputDevice->write(" |-- QVVRs:\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- qvvr_idx: " + QByteArray::number(ied_usr.LD_info[i].qvvr_idx) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- QVVRs:\n");
|
||||
for (int j = 0; j < 256; ++j) {
|
||||
if (ied_usr.LD_info[i].qvvr[j].used_status != 0) {
|
||||
outputDevice->write(" |-- QVVR[" + QByteArray::number(j) + "]:\n");
|
||||
outputDevice->write(" |-- used_status: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].used_status) + "\n");
|
||||
outputDevice->write(" |-- QVVR_start: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_start) + "\n");
|
||||
outputDevice->write(" |-- QVVR_type: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_type) + "\n");
|
||||
outputDevice->write(" |-- QVVR_time: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_time) + "\n");
|
||||
outputDevice->write(" |-- QVVR_PerTime: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_PerTime) + "\n");
|
||||
outputDevice->write(" |-- QVVR_Amg: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_Amg) + "\n");
|
||||
outputDevice->write(" |-- QVVR_Rptname: " + QByteArray(ied_usr.LD_info[i].qvvr[j].QVVR_Rptname) + "\n");
|
||||
outputDevice->write(" |-- timestamp: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].timestamp) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- QVVR[" + QByteArray::number(j) + "]:\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- used_status: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].used_status) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- QVVR_start: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_start) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- QVVR_type: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_type) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- QVVR_time: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_time) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- QVVR_PerTime: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_PerTime) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- QVVR_Amg: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].QVVR_Amg) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- QVVR_Rptname: " + QByteArray(ied_usr.LD_info[i].qvvr[j].QVVR_Rptname) + "\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write(" |-- timestamp: " + QByteArray::number(ied_usr.LD_info[i].qvvr[j].timestamp) + "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
outputDevice->write("------------------------------------\n");
|
||||
outputDevice->write("\r\x1B[K");outputDevice->write("------------------------------------\n");
|
||||
}
|
||||
|
||||
// <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2><EFBFBD>ض<EFBFBD><D8B6>ն<EFBFBD><D5B6><EFBFBD>Ϣ
|
||||
void ledger(const char* terminal_id, QIODevice* outputDevice) {
|
||||
outputDevice->write("\r\x1B[K");
|
||||
outputDevice->write("print ledger in shell");
|
||||
pthread_mutex_lock(&mtx); std::cout << "ledger()hold lock !!!!!!!!!!!" << std::endl;
|
||||
bool found = false;
|
||||
@@ -11790,20 +11786,25 @@ void ledger(const char* terminal_id, QIODevice* outputDevice) {
|
||||
if(ied != NULL){
|
||||
ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
if (ied_usr != NULL && (terminal_id == NULL || strcmp(ied_usr->terminal_id, terminal_id) == 0)) {
|
||||
//printLedgerinshell(*ied_usr, outputDevice); // ʹ<><CAB9> QIODevice <20><><EFBFBD><EFBFBD>
|
||||
printLedgerinshell(*ied_usr, outputDevice); // ʹ<><CAB9> QIODevice <20><><EFBFBD><EFBFBD>
|
||||
//std::cout << "!!! print to log !!!"<< std::endl;
|
||||
//printLedger(*ied_usr);
|
||||
found = true;
|
||||
if(terminal_id != NULL && strcmp(ied_usr->terminal_id, terminal_id) == 0){
|
||||
found = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (!found || terminal_id == NULL) {
|
||||
std::cout << "<EFBFBD><EFBFBD><EFBFBD>ն˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " << terminal_id << std::endl;
|
||||
QByteArray msg = "<EFBFBD><EFBFBD><EFBFBD>ն˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " + QByteArray(terminal_id ? terminal_id : "NULL") + "\n";
|
||||
pthread_mutex_unlock(&mtx); std::cout << "ledger()free lock !!!!!!!!!!!" << std::endl;
|
||||
if (terminal_id != NULL && !found) {
|
||||
std::cout << "terminal not exsist: " << terminal_id << std::endl;
|
||||
QByteArray msg = "terminal not exsist: " + QByteArray(terminal_id) + "\n";
|
||||
outputDevice->write("\r\x1B[K");
|
||||
outputDevice->write(msg); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> QIODevice
|
||||
}
|
||||
pthread_mutex_unlock(&mtx); std::cout << "ledger()free lock !!!!!!!!!!!" << std::endl;
|
||||
|
||||
}
|
||||
|
||||
//lnk20250210<31><30>ӡָ<D3A1><D6B8><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -11815,25 +11816,32 @@ void value_print(const char *variableName, QTcpSocket *clientSocket) {
|
||||
|
||||
if (strcmp(variableName, "frontindex") == 0) {
|
||||
sprintf(buffer, "frontindex = %d", g_front_seg_index); // <20><> int ת<><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write(buffer); // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
|
||||
}
|
||||
else if (strcmp(variableName, "remtable") == 0) {
|
||||
sprintf(buffer, "remtable = %d",g_pt61850app->chnl_counts);
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write(buffer);
|
||||
}
|
||||
else if (strcmp(variableName, "iedcount") == 0) {
|
||||
sprintf(buffer, "g_node->n_clients = %d, ied config count = %d",g_node->n_clients ,IED_COUNT);
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write(buffer);
|
||||
} else if (strcmp(variableName, "frontfun") == 0) {
|
||||
sprintf(buffer, "frontfun = %s", subdir);
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write(buffer);
|
||||
} else if (strcmp(variableName, "log") == 0) {
|
||||
sprintf(buffer, "showinshellflag = %d,debugOutputEnabled = %d,normalOutputEnabled = %d,warnOutputEnabled = %d,errorOutputEnabled = %d", showinshellflag,debugOutputEnabled,normalOutputEnabled,warnOutputEnabled,errorOutputEnabled);
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write(buffer);
|
||||
}else if (strcmp(variableName, "init") == 0) {
|
||||
sprintf(buffer, "INITFLAG = %d",INITFLAG);
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write(buffer);
|
||||
}else {
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write("Unknown variable name\n> ");
|
||||
}
|
||||
pthread_mutex_unlock(&mtx); std::cout << "value_print free lock !!!!!!!!!!!" << std::endl;
|
||||
@@ -11859,6 +11867,7 @@ pthread_mutex_t* getLogMutex(const QString& level) {
|
||||
void Worker::handleViewLogCommand(const QString& command, QTcpSocket* clientSocket) {
|
||||
QStringList parts = command.split(" ");
|
||||
if (parts.size() != 2) {
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write("Usage: viewlog [ERROR|WARN|NORMAL|DEBUG]\n> ");
|
||||
clientSocket->flush();
|
||||
return;
|
||||
@@ -11869,6 +11878,7 @@ void Worker::handleViewLogCommand(const QString& command, QTcpSocket* clientSock
|
||||
pthread_mutex_t* logMutex = getLogMutex(logLevel);
|
||||
|
||||
if (!logList || !logMutex) {
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write("Invalid log level! Use ERROR, WARN, NORMAL, or DEBUG.\n> ");
|
||||
clientSocket->flush();
|
||||
return;
|
||||
@@ -11877,6 +11887,7 @@ void Worker::handleViewLogCommand(const QString& command, QTcpSocket* clientSock
|
||||
stopViewLog = false;
|
||||
activeClient = clientSocket; // <20><>¼<EFBFBD><C2BC>ǰ shell socket
|
||||
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write(QString("Viewing logs for level: %1 (Press 'q' to exit)\n> ").arg(logLevel).toUtf8());
|
||||
clientSocket->flush();
|
||||
|
||||
@@ -11900,6 +11911,7 @@ void Worker::handleViewLogCommand(const QString& command, QTcpSocket* clientSock
|
||||
pthread_mutex_unlock(logMutex);
|
||||
|
||||
if (!logEntry.empty()) {
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write((logEntry + "\n").c_str());
|
||||
clientSocket->flush();
|
||||
}
|
||||
@@ -11910,6 +11922,7 @@ void Worker::handleViewLogCommand(const QString& command, QTcpSocket* clientSock
|
||||
}
|
||||
|
||||
// **3. <20>˳<EFBFBD> `viewlog`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Shell**
|
||||
clientSocket->write("\r\x1B[K");
|
||||
clientSocket->write("\nLog view stopped. Returning to shell.\n> ");
|
||||
clientSocket->flush();
|
||||
}
|
||||
@@ -15289,12 +15302,20 @@ public:
|
||||
TeeStreamBuf()
|
||||
: m_originalBuf(NULL), m_level(LOGNORMAL)
|
||||
{
|
||||
pthread_mutex_init(&m_mutex, NULL);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ι<EFBFBD><CEB9>죺ֱ<ECA3BA>ӳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
TeeStreamBuf(std::streambuf* originalBuf, LogLevel level)
|
||||
: m_originalBuf(originalBuf), m_level(level)
|
||||
{
|
||||
pthread_mutex_init(&m_mutex, NULL);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
virtual ~TeeStreamBuf()
|
||||
{
|
||||
pthread_mutex_destroy(&m_mutex);
|
||||
}
|
||||
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD> init(...) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -15302,7 +15323,9 @@ public:
|
||||
{
|
||||
m_originalBuf = originalBuf;
|
||||
m_level = level;
|
||||
pthread_mutex_lock(&m_mutex);
|
||||
m_buffer.clear();
|
||||
pthread_mutex_unlock(&m_mutex);
|
||||
}
|
||||
|
||||
protected:
|
||||
@@ -15330,97 +15353,100 @@ protected:
|
||||
return traits_type::eof();
|
||||
}
|
||||
}
|
||||
// 2) <20>浽<EFBFBD><E6B5BD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
m_buffer.push_back((char)ch);
|
||||
// 2) <20>浽<EFBFBD><E6B5BD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>棬ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&m_mutex); //<2F><>ֹ<EFBFBD><D6B9><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20250305
|
||||
m_buffer.push_back(static_cast<char>(ch));
|
||||
// 3) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD> flushBuffer()
|
||||
if (ch == '\n') {
|
||||
flushBuffer();
|
||||
flushBuffer_locked();
|
||||
}
|
||||
pthread_mutex_unlock(&m_mutex);
|
||||
return ch;
|
||||
}
|
||||
|
||||
private:
|
||||
// <20><EFBFBD> m_buffer <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ list<73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void flushBuffer()
|
||||
// <20>ڲ<EFBFBD><EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void flushBuffer_locked()
|
||||
{
|
||||
if (m_buffer.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ݵȼ<DDB5> + <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> <20><> д<>ļ<EFBFBD><C4BC><EFBFBD>list
|
||||
// <20><><EFBFBD>ݵȼ<DDB5><C8BC>Ͷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>أ<EFBFBD><D8A3><EFBFBD> m_buffer д<><D0B4><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> list
|
||||
switch (m_level) {
|
||||
|
||||
case LOGERROR:
|
||||
|
||||
if (debugOutputEnabled) {
|
||||
pthread_mutex_lock(&debugListMutex);
|
||||
debugList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&debugListMutex);
|
||||
}
|
||||
if (debugOutputEnabled) {
|
||||
pthread_mutex_lock(&debugListMutex);
|
||||
debugList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&debugListMutex);
|
||||
}
|
||||
else if (normalOutputEnabled) {
|
||||
pthread_mutex_lock(&normalListMutex);
|
||||
normalList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&normalListMutex);
|
||||
}
|
||||
else if (warnOutputEnabled) {
|
||||
else if (warnOutputEnabled) {
|
||||
pthread_mutex_lock(&warnListMutex);
|
||||
warnList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&warnListMutex);
|
||||
}
|
||||
else if (errorOutputEnabled) {
|
||||
else if (errorOutputEnabled) {
|
||||
pthread_mutex_lock(&errorListMutex);
|
||||
errorList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&errorListMutex);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case LOGWARN:
|
||||
|
||||
if (debugOutputEnabled) {
|
||||
pthread_mutex_lock(&debugListMutex);
|
||||
debugList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&debugListMutex);
|
||||
}
|
||||
if (debugOutputEnabled) {
|
||||
pthread_mutex_lock(&debugListMutex);
|
||||
debugList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&debugListMutex);
|
||||
}
|
||||
else if (normalOutputEnabled) {
|
||||
pthread_mutex_lock(&normalListMutex);
|
||||
normalList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&normalListMutex);
|
||||
}
|
||||
else if (warnOutputEnabled) {
|
||||
else if (warnOutputEnabled) {
|
||||
pthread_mutex_lock(&warnListMutex);
|
||||
warnList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&warnListMutex);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case LOGNORMAL:
|
||||
if (debugOutputEnabled) {
|
||||
pthread_mutex_lock(&debugListMutex);
|
||||
debugList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&debugListMutex);
|
||||
}
|
||||
if (debugOutputEnabled) {
|
||||
pthread_mutex_lock(&debugListMutex);
|
||||
debugList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&debugListMutex);
|
||||
}
|
||||
else if (normalOutputEnabled) {
|
||||
pthread_mutex_lock(&normalListMutex);
|
||||
normalList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&normalListMutex);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
m_buffer.clear();
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ӿڣ<D3BF><DAA3>ڲ<EFBFBD><DAB2><EFBFBD> m_buffer <20><><EFBFBD><EFBFBD>
|
||||
void flushBuffer()
|
||||
{
|
||||
pthread_mutex_lock(&m_mutex);
|
||||
flushBuffer_locked();
|
||||
pthread_mutex_unlock(&m_mutex);
|
||||
}
|
||||
|
||||
private:
|
||||
// <20><>ֹ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ɵĸ<C9B5>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
||||
TeeStreamBuf& operator=(const TeeStreamBuf&); // <20><>ʵ<EFBFBD><CAB5>
|
||||
TeeStreamBuf& operator=(const TeeStreamBuf&);
|
||||
|
||||
private:
|
||||
std::streambuf* m_originalBuf;
|
||||
LogLevel m_level;
|
||||
std::string m_buffer;
|
||||
pthread_mutex_t m_mutex;
|
||||
};
|
||||
|
||||
// ------------------ ȫ<><C8AB>Tee<65><65><EFBFBD><EFBFBD><F3A3A8B1><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>ֵ<EFBFBD><D6B5> ------------------
|
||||
|
||||
Reference in New Issue
Block a user