add log4cplus
This commit is contained in:
120
mms/rdb_client.c
120
mms/rdb_client.c
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file: $RCSfile: rdb_client.c,v $
|
||||
* @brief: $PROFIBUS <EFBFBD><EFBFBD>SSRTDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @brief: $PROFIBUS 与SSRTDB交互
|
||||
*
|
||||
* @version: $Revision: 1.11 $
|
||||
* @date: $Date: 2020/10/28 05:21:18 $
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "rdb_client.h"
|
||||
#include "db_interface.h"
|
||||
#include "node.h"
|
||||
#include <pthread.h>//lnk20250114<EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#include <pthread.h>//lnk20250114给台账添加互斥锁
|
||||
|
||||
/*lnk10-10 */////////////////////////////////
|
||||
extern int HTTP_PORT;
|
||||
@@ -23,7 +23,7 @@ extern int G_TEST_FLAG;
|
||||
extern int g_front_seg_index;
|
||||
extern int g_front_seg_num;
|
||||
|
||||
#include "../include/rocketmq/SimpleProducer.h"
|
||||
#include "../rocketmq/SimpleProducer.h"
|
||||
#include "../cfg_parse/custom_printf.h"//lnk20250225
|
||||
|
||||
////////////////////////////////////////////
|
||||
@@ -42,11 +42,11 @@ apr_pool_t* g_init_pool;
|
||||
apr_pool_t* g_run_pool;
|
||||
apr_pool_t* g_temp_dev_pool;
|
||||
|
||||
//lnk20250114<EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//lnk20250114给台账添加互斥锁
|
||||
pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
extern char g_onlyIP[255]; //ֱ<EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern char g_onlyIP[255]; //直连某个IP,仅仅为方便测试
|
||||
//为无锡西径变调档添加
|
||||
uint8_t set_mx_q;
|
||||
|
||||
pt61850app_t* g_pt61850app;
|
||||
@@ -186,21 +186,23 @@ apr_status_t init_rdb()
|
||||
GetServerIndexFromDB();
|
||||
|
||||
rv = parse_device_cfg_web();
|
||||
|
||||
if (rv != APR_SUCCESS) {
|
||||
echo_errg("Parsed device config xml file with error,try to run! \n");
|
||||
return rv;
|
||||
}
|
||||
|
||||
//台账读取过后初始化各级的日志
|
||||
|
||||
|
||||
rv = parse_model_cfg_web();
|
||||
if (rv != APR_SUCCESS) {
|
||||
echo_errg("Parsed model with error,try to run! \n");
|
||||
return rv;
|
||||
}
|
||||
|
||||
Set_xml_nodeinfo();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>xmlģ<EFBFBD><EFBFBD>
|
||||
Set_xml_nodeinfo();//解析xml模型
|
||||
|
||||
rv = parse_rpt_log_ini();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
||||
rv = parse_rpt_log_ini();//报告块初始化
|
||||
if (rv != APR_SUCCESS) {
|
||||
echo_errg("Failed to parse report log define ini file! \n");
|
||||
return rv;
|
||||
@@ -216,7 +218,7 @@ apr_status_t init_rdb()
|
||||
|
||||
extern int SOCKETENABLE;
|
||||
extern int HTTPENABLE;
|
||||
/*--------------------------- <EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD> -----------------------------------*/
|
||||
/*--------------------------- 规约初始化 -----------------------------------*/
|
||||
apr_status_t run_protocol()
|
||||
{
|
||||
apr_status_t rv;
|
||||
@@ -224,9 +226,9 @@ apr_status_t run_protocol()
|
||||
|
||||
static apr_threadattr_t* worker_attr = NULL;
|
||||
|
||||
//lnk20250214//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD>0<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>ˣ<EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD>̺<EFBFBD>
|
||||
if (g_onlyIP[0] != 0 && g_front_seg_index == 0 && g_front_seg_num >= 10){ //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>web<EFBFBD>˿<EFBFBD><EFBFBD>ƴĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
g_front_seg_index = g_front_seg_num; //<EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD>̺<EFBFBD>Ϊ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĽ<EFBFBD><EFBFBD>̺ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD>־
|
||||
//lnk20250214//单连模式,进程先通过进程号0获取所有台账,然后再更新自己的进程号
|
||||
if (g_onlyIP[0] != 0 && g_front_seg_index == 0 && g_front_seg_num >= 10){ //这是web端控制打开的单连进程
|
||||
g_front_seg_index = g_front_seg_num; //更新进程号为:为这个单连进程设置的进程号,用来控制实时日志
|
||||
}
|
||||
|
||||
init_MMS();
|
||||
@@ -248,20 +250,20 @@ apr_status_t run_protocol()
|
||||
if ((rv = apr_thread_create(&rtdb_thread, worker_attr, rtdb_worker, NULL, g_run_pool)) != APR_SUCCESS)
|
||||
return rv;
|
||||
|
||||
try_start_kafka_thread();//mq<EFBFBD>߳<EFBFBD>
|
||||
try_start_kafka_thread();//mq线程
|
||||
|
||||
//lnk20241213<EFBFBD><EFBFBD><EFBFBD><EFBFBD>mq<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
|
||||
//lnk20241213添加mq消费者线程
|
||||
try_start_mqconsumer_thread();
|
||||
|
||||
///////////////////WW 2023-08-22 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD>WebSocket<EFBFBD>߳<EFBFBD>
|
||||
///////////////////WW 2023-08-22 增加数据库和WebSocket线程
|
||||
if (g_onlyIP[0] != 0 || g_node_id == NEW_HIS_DATA_BASE_NODE_ID || g_node_id == HIS_DATA_BASE_NODE_ID || g_node_id == RECALL_ALL_DATA_BASE_NODE_ID)
|
||||
{
|
||||
printf("g_onlyIP[0] != 0!\n\a");
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>socket<EFBFBD><EFBFBD>http<EFBFBD>߳<EFBFBD>
|
||||
//单连进程不打开socket、http线程
|
||||
|
||||
}
|
||||
else //socket<EFBFBD><EFBFBD>http<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵߳Ŀ<EFBFBD><EFBFBD><EFBFBD>
|
||||
else //socket、http、测试线程的开启
|
||||
{
|
||||
printf("g_onlyIP[0] == 0!\n\a");
|
||||
if (1 == SOCKETENABLE)
|
||||
@@ -272,16 +274,16 @@ apr_status_t run_protocol()
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int ServerPort = 13000;//WW <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD>ж<EFBFBD>ȡ
|
||||
if (g_node_id == STAT_DATA_BASE_NODE_ID)//ͳ<EFBFBD>Ʋɼ<EFBFBD>
|
||||
int ServerPort = 13000;//WW 这里后面需要从数据库的表中读取
|
||||
if (g_node_id == STAT_DATA_BASE_NODE_ID)//统计采集
|
||||
ServerPort = SOCKET_PORT + STAT_DATA_BASE_NODE_ID + g_front_seg_index;
|
||||
else if (g_node_id == RECALL_HIS_DATA_BASE_NODE_ID) {//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else if (g_node_id == RECALL_HIS_DATA_BASE_NODE_ID) {//补召
|
||||
ServerPort = SOCKET_PORT + RECALL_HIS_DATA_BASE_NODE_ID + g_front_seg_index;
|
||||
}
|
||||
else if (g_node_id == THREE_SECS_DATA_BASE_NODE_ID) {//3<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
|
||||
else if (g_node_id == THREE_SECS_DATA_BASE_NODE_ID) {//3秒采集
|
||||
ServerPort = SOCKET_PORT + THREE_SECS_DATA_BASE_NODE_ID + g_front_seg_index;
|
||||
}
|
||||
else if (g_node_id == SOE_COMTRADE_BASE_NODE_ID) {//<EFBFBD><EFBFBD>̬¼<EFBFBD><EFBFBD>
|
||||
else if (g_node_id == SOE_COMTRADE_BASE_NODE_ID) {//暂态录波
|
||||
ServerPort = SOCKET_PORT + SOE_COMTRADE_BASE_NODE_ID + g_front_seg_index;
|
||||
}
|
||||
|
||||
@@ -312,23 +314,23 @@ apr_status_t run_protocol()
|
||||
|
||||
if (1 == HTTPENABLE)
|
||||
{
|
||||
//lnk20241029<EFBFBD><EFBFBD><EFBFBD><EFBFBD>http<EFBFBD>߳<EFBFBD>///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if (g_node_id == STAT_DATA_BASE_NODE_ID)//ͳ<EFBFBD>Ʋɼ<EFBFBD>
|
||||
//lnk20241029增加http线程///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if (g_node_id == STAT_DATA_BASE_NODE_ID)//统计采集
|
||||
HTTP_PORT = HTTP_PORT + STAT_DATA_BASE_NODE_ID + g_front_seg_index;
|
||||
else if (g_node_id == RECALL_HIS_DATA_BASE_NODE_ID) {//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else if (g_node_id == RECALL_HIS_DATA_BASE_NODE_ID) {//补召
|
||||
HTTP_PORT = HTTP_PORT + RECALL_HIS_DATA_BASE_NODE_ID + g_front_seg_index;
|
||||
}
|
||||
else if (g_node_id == THREE_SECS_DATA_BASE_NODE_ID) {//3<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
|
||||
else if (g_node_id == THREE_SECS_DATA_BASE_NODE_ID) {//3秒采集
|
||||
HTTP_PORT = HTTP_PORT + THREE_SECS_DATA_BASE_NODE_ID + g_front_seg_index;
|
||||
}
|
||||
else if (g_node_id == SOE_COMTRADE_BASE_NODE_ID) {//<EFBFBD><EFBFBD>̬¼<EFBFBD><EFBFBD>
|
||||
else if (g_node_id == SOE_COMTRADE_BASE_NODE_ID) {//暂态录波
|
||||
HTTP_PORT = HTTP_PORT + SOE_COMTRADE_BASE_NODE_ID + g_front_seg_index;
|
||||
}
|
||||
printf("try_start_web_http_thread \n");
|
||||
try_start_web_http_thread();
|
||||
printf("try_start_http_thread \n");
|
||||
try_start_http_thread();
|
||||
//lnk20241029<EFBFBD><EFBFBD><EFBFBD><EFBFBD>http<EFBFBD>߳<EFBFBD>///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//lnk20241029增加http线程///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
|
||||
@@ -342,32 +344,32 @@ apr_status_t run_protocol()
|
||||
|
||||
extern uint32_t g_dead_lock_counter;
|
||||
extern uint32_t g_thread_blocked_times;
|
||||
/*--------------------------- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD> -----------------------------------*/
|
||||
/*--------------------------- 连接实时库线程 -----------------------------------*/
|
||||
static void* APR_THREAD_FUNC rtdb_worker(apr_thread_t* thd, void* data)
|
||||
{
|
||||
|
||||
while (1) {
|
||||
|
||||
doCommService();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>61850<EFBFBD><EFBFBD>Ϣ
|
||||
doCommService();//处理61850消息
|
||||
|
||||
check_3s_config();//3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>̶<EFBFBD>ȡ3<EFBFBD>봥<EFBFBD><EFBFBD>
|
||||
check_3s_config();//3秒数据进程读取3秒触发
|
||||
|
||||
CheckNextNotConnectedChannel();//<EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||
CheckNextNotConnectedChannel();//所有长连接进程判断连接状态
|
||||
|
||||
CheckAllConnectedChannel();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>桢<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD>١<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CheckAllConnectedChannel();//触发报告、日志补召、发送心跳
|
||||
|
||||
create_recall_xml();//<EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xml<EFBFBD>ļ<EFBFBD>
|
||||
create_recall_xml();//生成待补招xml文件
|
||||
|
||||
pthread_mutex_lock(&mtx);
|
||||
check_ledger_update();//lnk20250113<EFBFBD><EFBFBD>ȡ̨<EFBFBD>˸<EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD>
|
||||
check_ledger_update();//lnk20250113读取台账更新,触发台账更新
|
||||
pthread_mutex_unlock(&mtx);
|
||||
|
||||
check_disk_quota();//<EFBFBD>жϴ<EFBFBD><EFBFBD>̿ռ<EFBFBD>
|
||||
check_disk_quota();//判断磁盘空间
|
||||
|
||||
apr_pool_clear(g_pt61850app->tmp_pool);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
apr_pool_clear(g_pt61850app->tmp_pool);//清除临时缓存
|
||||
|
||||
g_dead_lock_counter = 0;
|
||||
g_thread_blocked_times = 0;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
|
||||
g_thread_blocked_times = 0;//监控线程
|
||||
}
|
||||
|
||||
echo_msg("rtdb worker thread terminated...");
|
||||
@@ -406,7 +408,7 @@ apr_time_t convert_btime6_to_apr_time(MMS_BTIME6* bTime6)
|
||||
{
|
||||
apr_time_t ticks;
|
||||
if ((TIME_T_1984_JAN_1 + (bTime6->day * SECONDS_PER_DAY)) > TIME_T_2036) {
|
||||
echo_warn("ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2036<EFBFBD>꣡");
|
||||
echo_warn("时标错误,超过2036年!");
|
||||
}
|
||||
ticks = TIME_T_1984_JAN_1;
|
||||
ticks += (bTime6->day * SECONDS_PER_DAY);
|
||||
@@ -418,7 +420,7 @@ apr_time_t convert_btime6_to_apr_time(MMS_BTIME6* bTime6)
|
||||
|
||||
/*
|
||||
61850
|
||||
λ <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ
|
||||
位 属性名称 值
|
||||
0-1 Good 00
|
||||
Invalid 01
|
||||
Reserved 10
|
||||
@@ -437,15 +439,15 @@ apr_time_t convert_btime6_to_apr_time(MMS_BTIME6* bTime6)
|
||||
*/
|
||||
/*
|
||||
60870
|
||||
λ <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ
|
||||
0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
5 <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
|
||||
6 <EFBFBD>ǵ<EFBFBD>ǰֵ
|
||||
7 <EFBFBD><EFBFBD>Ч
|
||||
位 属性名称 值
|
||||
0 溢出
|
||||
1 保留
|
||||
2 保留
|
||||
3 保留
|
||||
4 被封锁
|
||||
5 被取代
|
||||
6 非当前值
|
||||
7 无效
|
||||
*/
|
||||
byte_t get_mx_q_from_61850(char* q_61850)
|
||||
{
|
||||
@@ -480,15 +482,15 @@ byte_t get_mx_q_from_61850(char* q_61850)
|
||||
|
||||
/*
|
||||
60870
|
||||
λ <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ
|
||||
0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
5 <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
|
||||
6 <EFBFBD>ǵ<EFBFBD>ǰֵ
|
||||
7 <EFBFBD><EFBFBD>Ч
|
||||
位 属性名称 值
|
||||
0 保留
|
||||
1 保留
|
||||
2 保留
|
||||
3 保留
|
||||
4 被封锁
|
||||
5 被取代
|
||||
6 非当前值
|
||||
7 无效
|
||||
*/
|
||||
byte_t get_st_q_from_61850(char* q_61850)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user