From 4e860b9ffb68f0183886151ec1d955e5f2a10005 Mon Sep 17 00:00:00 2001 From: lnk Date: Wed, 12 Mar 2025 11:45:53 +0800 Subject: [PATCH] fix connect info --- json/create_json.cpp | 29 ++++++++++++-------------- mms/mms_process.c | 48 ++++++++++++++++++++++++++++++-------------- 2 files changed, 46 insertions(+), 31 deletions(-) diff --git a/json/create_json.cpp b/json/create_json.cpp index dbc8183..2372097 100644 --- a/json/create_json.cpp +++ b/json/create_json.cpp @@ -4003,8 +4003,19 @@ void connectlog_pgsql(char* id,char* datetime,int status) //std::cout << "jsonString: " << jsonString << std::endl;////减少多余的打印 - //发送数据到远端 - //SendJsonAPI_web(WEB_COMFLAG, "", jsonString,&ptr);//不使用接口lnk20250310 + //发送数据到远端 + + /*SendJsonAPI_web(WEB_COMFLAG, "", jsonString,&ptr);//不使用接口lnk20250310 + //处理返回的数据 + // 检查 ptr 是否为 NULL,避免 std::string 初始化失败 + if (ptr != NULL) { + //handleCommentResponse(std::string(ptr));//减少多余的打印 + free(ptr); // 如果 SendJsonAPI_web 分配了内存,记得释放 + } else { + // 处理 ptr 为 NULL 的情况,例如日志记录或错误处理 + std::cout << "Error: Received NULL response" << std::endl; + }*/ + //使用mq Ckafka_data_t connect_info; connect_info.strTopic = QString::fromStdString(G_CONNECT_TOPIC); @@ -4016,20 +4027,6 @@ void connectlog_pgsql(char* id,char* datetime,int status) kafka_data_list_mutex.unlock(); //解锁 } - - //处理返回的数据 - // 检查 ptr 是否为 NULL,避免 std::string 初始化失败 - if (ptr != NULL) { - //handleCommentResponse(std::string(ptr));//减少多余的打印 - free(ptr); // 如果 SendJsonAPI_web 分配了内存,记得释放 - } else { - // 处理 ptr 为 NULL 的情况,例如日志记录或错误处理 - std::cout << "Error: Received NULL response" << std::endl; - } - - // 转换为 QString - QString result = QString::fromStdString(jsonString); - // 释放内存 cJSON_Delete(jsonObject); free(jsonString); // cJSON_PrintUnformatted使用malloc分配内存 diff --git a/mms/mms_process.c b/mms/mms_process.c index 296fd41..782065a 100644 --- a/mms/mms_process.c +++ b/mms/mms_process.c @@ -28,7 +28,7 @@ void clear_rpt_counter_by_trigger(trigger_t *trigger); //lnk20241031 extern void SOEFileWeb(char* localpath,char* cloudpath,char* wavepath); //lnk 2024-11-4 添加时间转换函数 -char* convertMsToDateTimeString(int msTime); +char* convertMsToDateTimeString(int64_t msTime); //lnk20250115 extern pthread_mutex_t mtx; extern apr_pool_t* g_cfg_pool; @@ -1617,7 +1617,9 @@ void CheckNextNotConnectedChannel() //lnk202411-1添加连接成功的记录 ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext; - connectlog_pgsql(ied_usr->terminal_code,convertMsToDateTimeString((int)sGetMsTime()),1);//1成功 + apr_time_t t_now = apr_time_now(); + printf("msTime:%ld",t_now); + connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),1);//1成功 } else @@ -1630,7 +1632,7 @@ void CheckNextNotConnectedChannel() //lnk202411-4 //connectlog_pgsql(ied_usr->terminal_code);//连接请求失败 //printf("check error89 !!!!!!!!!!!!!!\n"); - connectlog_pgsql(ied_usr->terminal_code,convertMsToDateTimeString((int)sGetMsTime()),0);//0失败 + //connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(sGetMsTime()),0);//0失败 //printf("check error88 !!!!!!!!!!!!!!\n"); } printf( "reqCtrl->result == FAIL, Since StartConnecting %i sec ,channel IP %s:%d \n",secsSince,chnl_usr->ip_str,chnl_usr->chnl->port); @@ -1650,7 +1652,7 @@ void CheckNextNotConnectedChannel() if (g_node_id == STAT_DATA_BASE_NODE_ID || g_node_id == NEW_HIS_DATA_BASE_NODE_ID) { //connectlog_pgsql(ied_usr->terminal_code);//reqCtrl->done未完成,重连超时5分钟 //lnk202411-4 - connectlog_pgsql(ied_usr->terminal_code,convertMsToDateTimeString((int)sGetMsTime()),0);//0失败 + //connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(sGetMsTime()),0);//0失败 } //cout<GetIP()<<" reqCtrl->done == SD_false but time over 300 secs, close channel !!!"<done未完成,but time over 300 secs, close channel IP %s,NetInfo= %x ",chnl_usr->ip_str,chnl_usr->net_info); @@ -1711,8 +1713,8 @@ void CheckNextNotConnectedChannel() //RDB_SetIedChnlStatus(chnl_usr->chnl->ied, STATUS_NOINIT, chnl_usr->chnl_id); //write_status_to_db(0,chnl_usr->chnl->addr); - //lnk202411-1添加重新连接,并没有连接成功,没有正在连接的记录 - //connectlog_pgsql(ied_usr->terminal_code,convertMsToDateTimeString((int)sGetMsTime()),1);//1成功 + //lnk202411-1添加重新连接,并没有连接成功 + //connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(sGetMsTime()),1); } else @@ -1725,7 +1727,7 @@ void CheckNextNotConnectedChannel() //connectlog_pgsql(ied_usr->terminal_code);//重连失败 //调试用 //printf("check error96 !!!!!!!!!!!!!!\n"); - connectlog_pgsql(ied_usr->terminal_code,convertMsToDateTimeString((int)sGetMsTime()),0);//0失败 + //connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(sGetMsTime()),0);//重连失败状态没有改变不需要发送20250312 //printf("check error95 !!!!!!!!!!!!!!\n"); } echo_warn3("FAILED: mms_connectToServer IP %s:%d ,NetInfo= %x \n", chnl_usr->ip_str, chnl_usr->chnl->port, chnl_usr->net_info); @@ -1751,7 +1753,12 @@ void CheckNextNotConnectedChannel() chnl_usr->m_reqCtrl = NULL; chnl_usr->net_info = NULL; chnl_usr->m_state = CHANNEL_DISCONNECTED; - chnl_usr->m_ClosedMsTime = sGetMsTime(); + chnl_usr->m_ClosedMsTime = sGetMsTime(); + //断联成功 + ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext; + apr_time_t t_now = apr_time_now(); + connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0); + } else {// @@ -1772,6 +1779,10 @@ void CheckNextNotConnectedChannel() chnl_usr->net_info = NULL; chnl_usr->m_state = CHANNEL_DISCONNECTED; chnl_usr->m_ClosedMsTime = sGetMsTime(); + //超时断联成功 + ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext; + apr_time_t t_now = apr_time_now(); + connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0); } } }//if(pChannel->m_state == CHANNEL_DISCONNECTING) @@ -2135,16 +2146,23 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info ) } //lnk 2024-11-4 添加时间转换函数 -char* convertMsToDateTimeString(int msTime) { - // 将毫秒时间戳转换为秒时间戳 - time_t seconds = msTime / 1000; +char* convertMsToDateTimeString(int64_t usTime) { + // 确保时间戳是有效的 + if (usTime < 0) { + return "Invalid timestamp"; + } - // 获取本地时间 - struct tm* timeInfo = localtime(&seconds); + // 将 `apr_time_t` 微秒(us)转换为 `time_t` 秒(s) + time_t seconds = usTime / 1000000; + + // 用 `struct tm` 变量存储时间 + struct tm timeInfo; + // **使用 `localtime_r()` 考虑系统时区** + localtime_r(&seconds, &timeInfo); // 静态分配的字符数组存储转换后的字符串 - static char buffer[20]; - strftime(buffer, sizeof(buffer), "%y-%m-%d %H:%M:%S", timeInfo); + static char buffer[30]; + strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &timeInfo); return buffer; }