modify for ledgerupdate
This commit is contained in:
@@ -57,6 +57,13 @@ extern "C" {
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
///////////////////////////////lnk20250118̨<38>˱<EFBFBD><CBB1><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5>ڴ<EFBFBD><DAB4>أ<EFBFBD><D8A3><EFBFBD>̬<EFBFBD>ڴ<EFBFBD><DAB4>صķ<D8B5>ʽ<EFBFBD><CABD>ÿ<EFBFBD><C3BF><EFBFBD>ڴ<EFBFBD><DAB4>ط<EFBFBD>һ<EFBFBD><D2BB>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD>
|
||||
// <20><><EFBFBD>ڴ洢<DAB4>ն<EFBFBD> ID <20>Ͷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ӳ<EFBFBD>
|
||||
std::list<std::pair<std::string, apr_pool_t*> > pool_list;
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
//ZW 2023-10-10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>нṹ
|
||||
class RecallInfo
|
||||
{
|
||||
@@ -191,6 +198,9 @@ std::string LEDGER_UPDATE_FN = "LedgerUpdate.log";
|
||||
|
||||
const int MAX_CPUNO = 10;
|
||||
|
||||
//lnk20250121<32>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int IED_COUNT = 200; //Ĭ<><C4AC>200
|
||||
|
||||
//WW 2-23-08-20 add start
|
||||
otl_connect db; //OTL<54><4C><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD> WW 2023-08-20
|
||||
int g_iOTLFlag = 0; //Sql<71>Ƿ<EFBFBD>ִ<EFBFBD>б<EFBFBD>־(0-<2D><>ִ<EFBFBD>У<EFBFBD>1-ִ<><D6B4>) //lnk202410-22<32>滻web<65>ӿں<D3BF><DABA>ر<EFBFBD>
|
||||
@@ -666,6 +676,7 @@ void init_config() {
|
||||
std::cout << "Read MONITOR_STATUS:" << MONITOR_STATUS << std::endl;
|
||||
ICD_FLAG = settings.value("Ledger/IcdFlag", 0).toString().toStdString();
|
||||
std::cout << "Read ICD_FLAG:" << ICD_FLAG << std::endl;
|
||||
IED_COUNT = settings.value("Ledger/IedCount", 0).toInt();
|
||||
|
||||
//////////////////////////////////////////////////<2F><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD>///////////////////
|
||||
SOCKETENABLE = settings.value("Socket/SocketEnable", 0).toInt();
|
||||
@@ -3849,7 +3860,8 @@ int parse_rpt_log_ini()
|
||||
QStringList* log_temp = new QStringList();
|
||||
rpt_cfg_strlists.insert(type, rpt_temp);
|
||||
log_cfg_strlists.insert(type, log_temp);
|
||||
parse_one_rpt_log_ini(ied_usr->dev_flag, rpt_cfg_strlists[type], log_cfg_strlists[type], ied_usr->dev_type);
|
||||
//g_DevFlagû<67><C3BB>ʹ<EFBFBD><CAB9>
|
||||
parse_one_rpt_log_ini(g_DevFlag, rpt_cfg_strlists[type], log_cfg_strlists[type], ied_usr->dev_type);
|
||||
|
||||
}
|
||||
/*if (not_loaded[ied_usr->dev_flag]) {
|
||||
@@ -12145,10 +12157,12 @@ int parse_device_cfg_web()
|
||||
|
||||
std::cout << "terminal_ledger_num:" << count_cfg << std::endl;
|
||||
|
||||
g_node->n_clients = count_cfg; //<2F><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
||||
g_node->clients = (ied_t**)apr_pcalloc(g_cfg_pool, count_cfg * sizeof(ied_t*));
|
||||
g_node->n_clients = count_cfg;
|
||||
//<2F><><EFBFBD>↑<EFBFBD>ٵ<EFBFBD>ied<65>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD><D0B5>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20250121
|
||||
g_node->clients = (ied_t**)apr_pcalloc(g_cfg_pool, IED_COUNT * sizeof(ied_t*));//g_node->clients <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ռ<EFBFBD><D5BC>洢<EFBFBD><E6B4A2> count_cfg <20><> ied_t* <20><><EFBFBD>͵<EFBFBD>ָ<EFBFBD>루<EFBFBD><EBA3A8>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>飩<EFBFBD><E9A3A9><EFBFBD>ǣ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룩<EFBFBD><EBA3A9>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for (int k = 0; k < count_cfg; k++)
|
||||
g_node->clients[k] = (ied_t*)apr_pcalloc(g_cfg_pool, sizeof(ied_t));
|
||||
g_node->clients[k] = (ied_t*)apr_pcalloc(g_cfg_pool, sizeof(ied_t));//ÿ<><C3BF> g_node->clients[k] ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>ģ<EFBFBD>ÿ<EFBFBD><C3BF> ied_t <20>ṹ<EFBFBD><E1B9B9>ռ<EFBFBD>õ<EFBFBD><C3B5>ڴ<EFBFBD><DAB4>飩<EFBFBD><E9A3A9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
//<2F><>ȡ<EFBFBD>ն<EFBFBD>̨<EFBFBD>˱<EFBFBD><CBB1>滻Ϊweb<65>ӿ<EFBFBD>
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -12192,21 +12206,24 @@ int parse_device_cfg_web()
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>
|
||||
ied = g_node->clients[count_real++];
|
||||
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));//<2F>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>initpool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
||||
ied->usr_ext = ied_usr;
|
||||
|
||||
if (ied_usr == NULL)
|
||||
return APR_ENOMEM;
|
||||
|
||||
ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;
|
||||
ied_usr->LD_info = (LD_info_t*)apr_pcalloc(g_init_pool, MAX_CPUNO * sizeof(LD_info_t));
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||
ied_usr->LD_info = (LD_info_t*)apr_pcalloc(g_init_pool, MAX_CPUNO * sizeof(LD_info_t));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>initpool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
||||
|
||||
if (ied_usr->LD_info == NULL)
|
||||
return APR_ENOMEM;
|
||||
|
||||
ied_usr->dev_flag = g_DevFlag;
|
||||
ied_usr->dev_flag = ENABLE;//<2F>ն<EFBFBD><D5B6><EFBFBD>Ч
|
||||
ied->chncount = 1;
|
||||
ied->channel = (channel_t*)apr_pcalloc(g_cfg_pool, sizeof(channel_t) * ied->chncount);
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||
ied->channel = (channel_t*)apr_pcalloc(g_cfg_pool, sizeof(channel_t) * ied->chncount);//ͨ<>Žṹ<C5BD><E1B9B9>g_cfg_pool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䣺<D5BC>ն˵<D5B6>ip<69>˿ڵ<CBBF>
|
||||
ied->channel[0].ied = ied;
|
||||
ied->channel[0].status = STATUS_BREAKOFF;
|
||||
ied->cpucount = 0;
|
||||
@@ -12309,7 +12326,8 @@ int parse_device_cfg_web()
|
||||
cout << "ied_usr->time:" << ied_usr->time << endl;
|
||||
}
|
||||
|
||||
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));//<2F><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>Žṹ<C5BD><E1B9B9>g_init_pool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䣺<D5BC><E4A3BA>չ<EFBFBD><D5B9>¼һЩ<D2BB><D0A9><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϣ
|
||||
ied->channel[0].connect = chnl_usr;
|
||||
chnl_usr->chnl = &(ied->channel[0]);
|
||||
chnl_usr->chnl_id = 0;
|
||||
@@ -12413,7 +12431,7 @@ int parse_device_cfg_web()
|
||||
strcpy(line_info.name, monitor_name);
|
||||
cout << "name:" << line_info.name << endl;
|
||||
|
||||
line_info.read_flag = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
||||
line_info.read_flag = ENABLE; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
||||
|
||||
//ied = find_ied_from_dev_code(line_info.terminal_code); //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC>ն<EFBFBD><D5B6>ˣ<EFBFBD><CBA3>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
@@ -12427,10 +12445,11 @@ int parse_device_cfg_web()
|
||||
ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
ied_usr->LD_info[cpuno - 1] = line_info; //cpunoĬ<6F><C4AC><EFBFBD><EFBFBD>1
|
||||
ied_usr->LD_info[cpuno - 1].ied = ied;
|
||||
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);
|
||||
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);
|
||||
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool);
|
||||
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);
|
||||
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD>תΪPQMonitorPQM+<2B><EFBFBD><DFBC><EFBFBD>
|
||||
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);//<2F><> str <20>еĸ<D0B5>ʽ<EFBFBD><CABD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ڴ<EFBFBD><DAB4><EFBFBD> g_init_pool <20>С<EFBFBD>ied_usr->LD_info[cpuno - 1].LD_name <20>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>LD_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PQMonitorPQM{cpuno} <20><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool); //<2F><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֱ<EFBFBD>Ϊ ied_usr->LD_info[cpuno - 1] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ht_fcd <20><> ht_full_fcda<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿յĹ<D5B5>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>apr_hash_make(g_init_pool) <20><><EFBFBD><EFBFBD> g_init_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ռ<EFBFBD>
|
||||
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);//<2F><><EFBFBD>ǵ<EFBFBD> key ֵ<><D6B5> value <20>ں<EFBFBD><DABA><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>п<EFBFBD><D0BF>ܻᱻ<DCBB><E1B1BB><EFBFBD><EFBFBD>
|
||||
ied_usr->LD_info[cpuno - 1].rptcount = 0;
|
||||
cout << "rptcount:" << ied_usr->LD_info[cpuno - 1].rptcount << endl;
|
||||
|
||||
@@ -12442,171 +12461,7 @@ int parse_device_cfg_web()
|
||||
}
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#if 0
|
||||
ied = g_node->clients[count_real++];
|
||||
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));
|
||||
ied->usr_ext = ied_usr;
|
||||
|
||||
if (ied_usr == NULL)
|
||||
return APR_ENOMEM;
|
||||
|
||||
ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;
|
||||
ied_usr->LD_info = (LD_info_t*)apr_pcalloc(g_init_pool, MAX_CPUNO * sizeof(LD_info_t));
|
||||
|
||||
if (ied_usr->LD_info == NULL)
|
||||
return APR_ENOMEM;
|
||||
|
||||
ied_usr->dev_flag = g_DevFlag;
|
||||
ied->chncount = 1;
|
||||
ied->channel = (channel_t*)apr_pcalloc(g_cfg_pool, sizeof(channel_t) * ied->chncount);
|
||||
ied->channel[0].ied = ied;
|
||||
ied->channel[0].status = STATUS_BREAKOFF;
|
||||
ied->cpucount = 0;
|
||||
|
||||
if (strlen(terminal_id) != 0) {
|
||||
apr_snprintf(ied_usr->terminal_id, sizeof(ied_usr->terminal_id), "%s", terminal_id);//terminal_id
|
||||
cout << "ied_usr->terminal_id:" << ied_usr->terminal_id << endl;
|
||||
}
|
||||
if (terminal_code != NULL) {
|
||||
apr_snprintf(ied_usr->terminal_code, sizeof(ied_usr->terminal_code), "%s", terminal_code);//terminal_code
|
||||
cout << "ied_usr->terminal_code:" << ied_usr->terminal_code << endl;
|
||||
|
||||
}
|
||||
/*<2A><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
if (org_name != NULL) {
|
||||
apr_snprintf(ied_usr->org_name, sizeof(ied_usr->org_name), "%s", org_name);//org_name
|
||||
cout << "ied_usr->org_name:" << ied_usr->org_name << endl;
|
||||
|
||||
}
|
||||
if (maint_name != NULL) {
|
||||
apr_snprintf(ied_usr->maint_name, sizeof(ied_usr->maint_name), "%s", maint_name);//maint_name
|
||||
cout << "ied_usr->maint_name:" << ied_usr->maint_name << endl;
|
||||
|
||||
}
|
||||
if (station_name != NULL) {
|
||||
apr_snprintf(ied_usr->station_name, sizeof(ied_usr->station_name), "%s", station_name);//station_name
|
||||
cout << "ied_usr->station_name:" << ied_usr->station_name << endl;
|
||||
}
|
||||
*/
|
||||
if (tmnl_factory != NULL) {
|
||||
apr_snprintf(ied_usr->tmnl_factory, sizeof(ied_usr->tmnl_factory), "%s", tmnl_factory);//tmnl_factory
|
||||
cout << "ied_usr->tmnl_factory:" << ied_usr->tmnl_factory << endl;
|
||||
|
||||
}
|
||||
if (tmnl_status != NULL) {
|
||||
apr_snprintf(ied_usr->tmnl_status, sizeof(ied_usr->tmnl_status), "%s", tmnl_status);//tmnl_status
|
||||
cout << "ied_usr->tmnl_status:" << ied_usr->tmnl_status << endl;
|
||||
}
|
||||
if (dev_type != NULL) {
|
||||
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;
|
||||
}
|
||||
if (dev_series != NULL) {
|
||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", dev_seri);//DEV_Series
|
||||
cout << "defalut dev_series:" << ied_usr->dev_series << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", "");//DEV_Series
|
||||
cout << "defalut dev_series:" << ied_usr->dev_series << endl;
|
||||
}
|
||||
if (dev_key != NULL) {
|
||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", dev_key);//DEV_Key
|
||||
cout << "defalut dev_key:" << ied_usr->dev_key << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", "");//DEV_Key
|
||||
cout << "defalut dev_key:" << ied_usr->dev_key << endl;
|
||||
}
|
||||
|
||||
//<2F>ϲ<EFBFBD><CFB2><EFBFBD>
|
||||
/* cout << "code" << ied_usr->terminal_code << endl;
|
||||
if (terminal_ext_map.contains(QString::fromUtf8(ied_usr->terminal_code))) {
|
||||
terminal_ext* ext = terminal_ext_map.value(QString::fromUtf8(ied_usr->terminal_code));
|
||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", ext->terminal_key);//DEV_Key
|
||||
cout << "dev_key:" << ied_usr->dev_key << endl;
|
||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", ext->terminal_identify_code);//DEV_Series
|
||||
cout << "dev_series:" << ied_usr->dev_series << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", "");//DEV_Key
|
||||
cout << "defalut dev_key:" << ied_usr->dev_key << endl;
|
||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", "");//DEV_Series
|
||||
cout << "defalut dev_series:" << ied_usr->dev_series << endl;
|
||||
}*/
|
||||
|
||||
ied->channel[0].channel_type = CHANNEL_TYPE_IPV4;//channel
|
||||
ied->channel[0].addr_str[LONGNAME - 1] = 0;//DEV_IP
|
||||
if (addr_str != NULL) {
|
||||
ied->channel[0].addr = ntohl(inet_addr(addr_str));//DEV_IP
|
||||
strncpy(ied->channel[0].addr_str, addr_str, LONGNAME - 1);//DEV_IP
|
||||
cout << "ied_usr->addr_str:" << ied->channel[0].addr_str << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
ied->channel[0].addr = ntohl(inet_addr("0.0.0.0"));//DEV_IP
|
||||
strncpy(ied->channel[0].addr_str, addr_str, LONGNAME - 1);//DEV_IP
|
||||
cout << "ied_usr->addr_str:" << ied->channel[0].addr_str << endl;
|
||||
}
|
||||
if (port_char != NULL) {
|
||||
int port = 102;
|
||||
if (stringToInt(port_char, &port)) {
|
||||
// ת<><D7AA><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>portStrȫΪ<C8AB><CEAA><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ת<EFBFBD><D7AA>Ϊint<6E><74><EFBFBD>͵<EFBFBD>port
|
||||
ied->channel[0].port = port;//DEV_PortID
|
||||
cout << "ied_usr->port:" << ied->channel[0].port << endl;//DEV_PortID
|
||||
}
|
||||
else {
|
||||
ied->channel[0].port = 102;//DEV_PortID
|
||||
cout << "ied_usr->port:" << port_char << ",<2C>ǺϷ<C7BA><CFB7>˿<EFBFBD>.ʹ<><CAB9>Ĭ<EFBFBD>϶˿<CFB6>:" << ied->channel[0].port << endl;//DEV_PortID
|
||||
}
|
||||
}
|
||||
if (timestamp.year != 0) {
|
||||
//// <20><><EFBFBD><EFBFBD>struct tm<74><6D><EFBFBD><EFBFBD>
|
||||
struct tm timeinfo;
|
||||
timeinfo.tm_year = timestamp.year - 1900; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȥ1900
|
||||
timeinfo.tm_mon = timestamp.month - 1; // <20>·<EFBFBD><C2B7><EFBFBD>Ҫ<EFBFBD><D2AA>ȥ1
|
||||
timeinfo.tm_mday = timestamp.day;
|
||||
timeinfo.tm_hour = timestamp.hour;
|
||||
timeinfo.tm_min = timestamp.minute;
|
||||
timeinfo.tm_sec = timestamp.second;
|
||||
time_t time = std::mktime(&timeinfo);
|
||||
ied_usr->time = static_cast<long long>(time);
|
||||
cout << "ied_usr->time:" << ied_usr->time << endl;
|
||||
}
|
||||
|
||||
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));
|
||||
ied->channel[0].connect = chnl_usr;
|
||||
chnl_usr->chnl = &(ied->channel[0]);
|
||||
chnl_usr->chnl_id = 0;
|
||||
chnl_usr->m_state = CHANNEL_DISCONNECTED;
|
||||
chnl_usr->m_ClosedMsTime = NEXT_CONNECT_TIME * (-1);
|
||||
g_pt61850app->chnl_counts++;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::cout << "value:" << terminal_id <<" "<<terminal_code <<" "<<tmnl_factory <<" "<<dev_series <<" "<<dev_key <<" "<< tmnl_status <<" "<<dev_type <<" "<<addr_str <<" "<<port_char <<" "<< timestamp.year << std::endl;
|
||||
|
||||
}//̨<><CCA8>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//û<>ж<EFBFBD>ǰ<EFBFBD><C7B0>
|
||||
/*//<2F>滻ǰ<E6BBBB>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD>
|
||||
if (MULTIPLE_NODE_FLAG) {
|
||||
|
||||
codes.push_back("updatefront");
|
||||
|
||||
codes.push_back(std::string(FRONT_IP));
|
||||
codes.push_back(intToString(FRONT_INST));
|
||||
codes.push_back(intToString(count_real));
|
||||
codes.push_back(std::string(PROGRAM_VERSION)); //<2F>Ͷ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>updateһ<65><D2BB><EFBFBD><EFBFBD>д<EFBFBD><D0B4>PROGRAM_VERSION
|
||||
|
||||
parse_device_web_test_front_write(codes);
|
||||
|
||||
codes.clear();
|
||||
|
||||
}
|
||||
//<2F>滻ǰ<E6BBBB>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD>*/
|
||||
#endif
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
if (count_real < count_cfg)
|
||||
g_node->n_clients = count_real;
|
||||
@@ -13096,7 +12951,7 @@ void OnTimerThread::run()
|
||||
pthread_mutex_lock(&mtx);//lnk20250114
|
||||
std::string mp_num_str = "";
|
||||
mp_num_str.append("connected device count:");
|
||||
mp_num_str.append(QString::number(FRONT_MP_NUM).toStdString());
|
||||
mp_num_str.append(QString::number(FRONT_MP_NUM).toStdString());//<2F><>¼<EFBFBD><C2BC><EFBFBD>ӵļ<D3B5><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mp_num_str.append(",g_node clients:");
|
||||
mp_num_str.append(QString::number(g_node->n_clients).toStdString());
|
||||
|
||||
@@ -14142,7 +13997,7 @@ void SOEFileWeb_test()
|
||||
/*<2A><>װC<D7B0>ɵ<EFBFBD><C9B5>õ<EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>º<EFBFBD><C2BA><EFBFBD> */////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//3-д<><D0B4>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//////////////////////////////
|
||||
int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_index)
|
||||
int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_index,int ied_take)
|
||||
{
|
||||
chnl_usr_t* chnl_usr = NULL;
|
||||
ied_usr_t* ied_usr = NULL;
|
||||
@@ -14183,8 +14038,10 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", ""); // Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
printf("ied_usr->dev_key (default): %s\n", ied_usr->dev_key);
|
||||
}
|
||||
ied_usr->dev_idx = terminal_index; // <20><><EFBFBD>µ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ն<EFBFBD><D5B6>ź<EFBFBD>
|
||||
|
||||
ied_usr->dev_idx = terminal_index; //<2F>ն<EFBFBD><D5B6>ź<EFBFBD>
|
||||
printf("dev_idx: %d\n", ied_usr->dev_idx);
|
||||
|
||||
ied->channel[0].channel_type = CHANNEL_TYPE_IPV4; // channel
|
||||
ied->channel[0].addr_str[LONGNAME - 1] = 0; // DEV_IP
|
||||
if (update[i].addr_str != NULL) {
|
||||
@@ -14207,6 +14064,7 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
printf("ied_usr->port: %s, <20>ǺϷ<C7BA><CFB7>˿<EFBFBD>. ʹ<><CAB9>Ĭ<EFBFBD>϶˿<CFB6>: %d\n", update[i].port, ied->channel[0].port); // DEV_PortID
|
||||
}
|
||||
}
|
||||
|
||||
if (update[i].timestamp != NULL && strlen(update[i].timestamp) > 0) {
|
||||
// <20><><EFBFBD><EFBFBD>struct tm<74><6D><EFBFBD><EFBFBD>
|
||||
struct tm timeinfo = {0}; // <20><>ʼ<EFBFBD><CABC>Ϊ0
|
||||
@@ -14235,13 +14093,22 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));
|
||||
ied->channel[0].connect = chnl_usr;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>пռ<D0BF><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(!ied_take){
|
||||
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));
|
||||
ied->channel[0].connect = chnl_usr;
|
||||
g_pt61850app->chnl_counts++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
||||
}
|
||||
else{
|
||||
chnl_usr = (chnl_usr_t*)ied->channel[0].connect;
|
||||
}
|
||||
|
||||
chnl_usr->chnl = &(ied->channel[0]);
|
||||
chnl_usr->chnl_id = 0;
|
||||
chnl_usr->m_state = CHANNEL_DISCONNECTED;
|
||||
chnl_usr->m_ClosedMsTime = NEXT_CONNECT_TIME * (-1);
|
||||
g_pt61850app->chnl_counts++;
|
||||
|
||||
// <20><> monitorData <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>뵽 LD_info <20><>
|
||||
int count_real_monitor = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˵ļ<CBB5><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
int j;
|
||||
@@ -14249,9 +14116,10 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
monitor monitor_data = update[i].line[j];
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
count_real_monitor++;
|
||||
// <20><>ʼ<EFBFBD><CABC> LD_info
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LD_info<66><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>漰ָ<E6BCB0><D6B8><EFBFBD>IJ<EFBFBD><C4B2>ֶ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
LD_info_t line_info;
|
||||
memset(&line_info, 0, sizeof(line_info));
|
||||
|
||||
char logical_device_seq[64];
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
strncpy(line_info.mp_id, monitor_data.monitor_id, sizeof(line_info.mp_id) - 1);
|
||||
@@ -14269,6 +14137,7 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
printf("logical_device_seq: %d\n", line_info.cpuno);
|
||||
}
|
||||
line_info.line_id = count_real_monitor; // <20><>¼<EFBFBD>ն<EFBFBD><D5B6>ź<EFBFBD>
|
||||
|
||||
printf("line_id: %d\n", line_info.line_id);
|
||||
printf("mp_id: %s\n", line_info.mp_id);
|
||||
printf("terminal_code: %s\n", line_info.terminal_code);
|
||||
@@ -14276,6 +14145,7 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
printf("v_wiring_type: %s\n", line_info.v_wiring_type);
|
||||
printf("monitor_status: %s\n", line_info.monitor_status);
|
||||
printf("name: %s\n", line_info.name);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
if (update[i].timestamp[0] != '\0') {
|
||||
struct tm timeinfo;
|
||||
@@ -14313,13 +14183,24 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
ied_usr->LD_info[cpuno - 1] = line_info; // cpunoĬ<6F><C4AC><EFBFBD><EFBFBD>1
|
||||
ied_usr->LD_info[cpuno - 1].ied = ied;
|
||||
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);
|
||||
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);
|
||||
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool);
|
||||
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD> LD_name<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
if (ied_usr->LD_info[cpuno - 1].LD_name == NULL) {
|
||||
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);
|
||||
} else {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻<EFBFBD><E6BBBB><EFBFBD><EFBFBD>ԭ<EFBFBD>пռ<D0BF><D5BC>ϸ<EFBFBD><CFB8><EFBFBD>
|
||||
apr_cpystrn(ied_usr->LD_info[cpuno - 1].LD_name, str, sizeof(ied_usr->LD_info[cpuno - 1].LD_name));
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>¹<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬ԭ<E6A3AC><D4AD><EFBFBD><EFBFBD>ied<65>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>˿յĹ<D5B5>ϣ<EFBFBD><CFA3><EFBFBD>Ͳ<EFBFBD><CDB2>ٷ<EFBFBD><D9B7>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ʱû<CAB1><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (ied_usr->LD_info[cpuno - 1].ht_fcd == NULL) {
|
||||
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool);
|
||||
}
|
||||
if (ied_usr->LD_info[cpuno - 1].ht_full_fcda == NULL) {
|
||||
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);
|
||||
}
|
||||
ied_usr->LD_info[cpuno - 1].rptcount = 0;
|
||||
printf("rptcount: %d\n", ied_usr->LD_info[cpuno - 1].rptcount);
|
||||
if (cpuno > ied->cpucount) {
|
||||
ied->cpucount = cpuno;
|
||||
ied->cpucount = cpuno;//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD>еļ<D0B5><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>࣬û<E0A3AC>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ǵIJ<C7B5><C4B2><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ᱣ֤<E1B1A3><D6A4><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>Щ֮ǰ<D6AE><C7B0>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ǵļ<C7B5><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
// ied_usr->LD_info[j] = line_info;
|
||||
@@ -14411,33 +14292,47 @@ void create_ledger_log(trigger_update_xml_t* ledger_update_xml) {
|
||||
log_file.close();
|
||||
std::cout << "Ledger log has been updated." << std::endl;
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ied_usr_t <20>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ݵĺ<DDB5><C4BA><EFBFBD>
|
||||
void clear_ied_usr(ied_t* ied) {
|
||||
if (ied && ied->usr_ext) { // <20><><EFBFBD><EFBFBD> usr_ext <20>Ƿ<EFBFBD>Ϊ NULL
|
||||
ied_usr_t* ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ա
|
||||
memset(ied_usr->dev_type, 0, sizeof(ied_usr->dev_type));
|
||||
memset(ied_usr->dev_key, 0, sizeof(ied_usr->dev_key));
|
||||
memset(ied_usr->dev_series, 0, sizeof(ied_usr->dev_series));
|
||||
memset(ied_usr->terminal_id, 0, sizeof(ied_usr->terminal_id));
|
||||
memset(ied_usr->org_name, 0, sizeof(ied_usr->org_name));
|
||||
memset(ied_usr->maint_name, 0, sizeof(ied_usr->maint_name));
|
||||
memset(ied_usr->station_name, 0, sizeof(ied_usr->station_name));
|
||||
memset(ied_usr->tmnl_factory, 0, sizeof(ied_usr->tmnl_factory));
|
||||
memset(ied_usr->tmnl_status, 0, sizeof(ied_usr->tmnl_status));
|
||||
memset(ied_usr->terminal_code, 0, sizeof(ied_usr->terminal_code));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>͵ij<CDB5>Ա
|
||||
ied_usr->dev_idx = 0;
|
||||
ied_usr->dev_flag = 0;
|
||||
ied_usr->cookie = NULL;
|
||||
ied_usr->last_call_wavelist_time = 0;
|
||||
ied_usr->time = 0;
|
||||
ied_usr->update_flag = 0;
|
||||
///////////////////////////////////////////////////////////////////////////̨<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>䲿<EFBFBD>ֹ<EFBFBD><EFBFBD>ܴ<EFBFBD><EFBFBD>룺δʹ<EFBFBD><EFBFBD>
|
||||
// ɾ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>
|
||||
void delete_sub_pool(const char* terminal_id) {
|
||||
std::list<std::pair<std::string, apr_pool_t*> >::iterator it;
|
||||
|
||||
for (it = pool_list.begin(); it != pool_list.end(); ++it) {
|
||||
if (it->first == terminal_id) {
|
||||
apr_pool_destroy(it->second); // <20><><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>
|
||||
pool_list.erase(it); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//<2F>Ҷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ӳ<EFBFBD>
|
||||
apr_pool_t* find_sub_pool(const char* terminal_id) {
|
||||
std::list<std::pair<std::string, apr_pool_t*> >::iterator it;
|
||||
|
||||
for (it = pool_list.begin(); it != pool_list.end(); ++it) {
|
||||
if (it->first == terminal_id) {
|
||||
return it->second; // <20>ҵ<EFBFBD><D2B5><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ӳ<EFBFBD>
|
||||
}
|
||||
}
|
||||
|
||||
return NULL; // û<><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ӳ<EFBFBD>
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ӳز<D3B3><D8B2><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
apr_pool_t* create_sub_pool(apr_pool_t* parent_pool, const char* terminal_id) {
|
||||
apr_pool_t* new_sub_pool = NULL;
|
||||
|
||||
// <20>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ӳ<EFBFBD>
|
||||
apr_pool_create(&new_sub_pool, parent_pool);
|
||||
|
||||
if (new_sub_pool == NULL) {
|
||||
return NULL; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ӳغ<D3B3><D8BA>ն<EFBFBD> ID <20>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pool_list.push_back(std::make_pair(std::string(terminal_id), new_sub_pool));
|
||||
|
||||
return new_sub_pool;
|
||||
}
|
||||
/*<2A><>װC<D7B0>ɵ<EFBFBD><C9B5>õ<EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>º<EFBFBD><C2BA><EFBFBD> */////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user