📄 dpf_para.cpp
字号:
/**************************************************************
* 所属模块 : dpflow
* 文件路径 : pas/dpflow
* 文 件 名 : dpf_para.cpp
* 文件功能 :
* 继承关系 :
* 操作系统 : PC & UNIX
* 备 注 :
* 历史记录 :
* 时间 版本 作者 原因
*===============================================================
* 2004年04月08日 1.0 pas created
***************************************************************/
#include <unistd.h>
#include <errno.h>
#include <signal.h>
#include <time.h>
#include "db_com/wholemodify.h"
#include "db_com/modify_client_base.h"
#include "db_com/CDbCommitClient.h"
#include "warn_service_message.h"
#include "dpf_pub.h"
#include "dpf_sys.h"
#include "dpf_pas.h"
#include "dpf_fun.h"
void dpflow_get_para(const int appno)
{
get_powerflow_para(appno);
info_comm_ems_pas comm_info;
GetCommInfo(appno, comm_info);
paspa1_->LIMTAG = comm_info.limtag;
//
CBuffer m_get_result;
ODB::CTableOp m_table_para(appno, PARA_DPFLOW_EMS_NO);
if(m_table_para.TableGet(PARA_DPFLOW_EMS_PAS_DEFFIELDS, m_get_result) >= 0
&& m_get_result.GetLength()/sizeof(PARA_DPFLOW_EMS_PAS) >= 1)
{
PARA_DPFLOW_EMS_PAS *m_para_info = (PARA_DPFLOW_EMS_PAS*)m_get_result.GetBufPtr();
pfpart1_->MXPCNTAG=m_para_info->mxpcntag;
if(pfpart1_->MXPCNTAG<5.||pfpart1_->MXPCNTAG>50.) pfpart1_->MXPCNTAG=10.;
}
}
void dpflow_set_run_state (const int appno)
{
time_t t_time = time(NULL);
pfpart1_->CALTIME = t_time;
char msg[80];
strcpy (msg, "正在进行潮流计算......");
ODB::CTableOp para_table(appno, PARA_DPFLOW_EMS_NO);
para_table.TableModify("runmsg", msg, 80);
para_table.TableModify("tpruntim", (const char*)&t_time, sizeof(int));
short run=1;
para_table.TableModify("running",(const char*)&run,sizeof(short));
info_comm_ems_pas comm_info;
GetCommInfo(appno, comm_info);
strcpy (comm_info.message, msg);
UpdateCommInfo(appno, comm_info);
}
void dpflow_set_result_state (const int appno, float cputime)
{
char msg[80];
ODB::CTableOp para_table (appno, PARA_DPFLOW_EMS_NO);
MESSLN2 = (char *)get_fldadr_true_2(famid_zsm, appid_zsm, "PFMOM", "MESSLN2", 0);
forstr_to_cstr (msg, MESSLN2, 0, MESSLN2$CHAR$SIZE);
para_table.TableModify ("runmsg", msg, 80);
time_t t_time = netbus_->TSE;
para_table.TableModify ("tse", (const char*)&t_time, sizeof(int));
t_time = pfpart1_->CALTIME;
para_table.TableModify ("tpruntim", (const char*)&t_time, sizeof(int));
t_time = time(NULL);
para_table.TableModify ("tpendtim", (const char*)&t_time, sizeof(int));
int run_time = t_time - pfpart1_->CALTIME;
para_table.TableModify ("exetim", (const char*)&run_time, sizeof(int));
para_table.TableModify ("cputime", (const char*)&cputime, sizeof(float));
short run = 0;
para_table.TableModify ("running", (const char*)&run, sizeof(short));
int num = pferr1_->TOTALNUM;
para_table.TableModify ("totalnum", (const char*)&num, sizeof(int));
float rate = pferr1_->CONVRATE;
para_table.TableModify ("convrate", (const char*)&rate, sizeof(float));
num = pferr1_->CORRNUM;
para_table.TableModify ("corrnum", (const char*)&num, sizeof(int));
num = pferr1_->TOTALPNT;
para_table.TableModify ("totalpnt", (const char*)&num, sizeof(int));
rate = pferr1_->TOTALERR;
para_table.TableModify ("totalerr", (const char*)&rate, sizeof(float));
num = pferr1_->LOCALPNT;
para_table.TableModify ("localpnt", (const char*)&num, sizeof(int));
rate = pferr1_->LOCALERR;
para_table.TableModify("localerr", (const char*)&rate, sizeof(float));
rate = pfpart1_->TRIPLNP;
para_table.TableModify("triplnp", (const char*)&rate, sizeof(float));
rate = pfpart1_->MXPCNTAG;
para_table.TableModify("mxpcntag", (const char*)&rate, sizeof(float));
put_powerflow_para(appno);
char hostnm[32], localnm[32];
strcpy (localnm, CCommArgs::NodeName().c_str());
gethostname (hostnm, 32);
NET_ODB::CTableNet table_node_info (PUBLIC, MNG_NODE_INFO_NO);
struct NodeInfo
{
int node_id;
char node_name[40];
};
CBuffer get_result;
int hostid(0), localid(0);
if(table_node_info.TableGet("node_id, node_name", get_result) >= 0)
{
NodeInfo *node_info_ptr = (NodeInfo*)get_result.GetBufPtr();
int rec_size = get_result.GetLength()/sizeof(NodeInfo);
for(int i=0; i<rec_size; ++i)
{
if(0 == strcmp(node_info_ptr[i].node_name, hostnm))
{
hostid = node_info_ptr[i].node_id;
}
if(0 == strcmp(node_info_ptr[i].node_name, localnm))
{
localid = node_info_ptr[i].node_id;
}
}
}
if ((0 == hostid) || (0 == localid))
{
printf ("++++++++ Error: get node id failed! \n\thostname = %s,\t hostid = %d\n\tlocalname = %s,\t localid = %d\n",
hostnm, hostid, localnm, localid);
return;
}
info_comm_ems_pas comm_info;
GetCommInfo (appno, comm_info);
comm_info.tse = netbus_->TSE;
comm_info.begintime = pfpart1_->CALTIME;
comm_info.endtime = t_time;
comm_info.cpu_time = cputime;
MESSLN2 = (char *)get_fldadr_true_2(famid_zsm, appid_zsm, "PFMOM", "MESSLN2", 0);
forstr_to_cstr (msg, MESSLN2, 0, MESSLN2$CHAR$SIZE);
strcpy (comm_info.message, msg);
comm_info.server_host = hostid;
comm_info.client_host = localid;
comm_info.conv_state = pfpart1_->RESTATUS;
UpdateCommInfo(appno, comm_info);
}
int log_month_rec (int con_state)
{
time_t t_time = time(NULL);
tm * pt_tm = localtime (&t_time);
int year = pt_tm->tm_year + 1900;
int mon = pt_tm->tm_mon + 1;
char sql_str[1000], time_str[64], ymstr[16];
sprintf (time_str, "where year=%d and month=%d", year, mon);
strftime (ymstr, 16, "%Y-%m", pt_tm);
sprintf (sql_str,
"DECLARE\n"
"counter number;\n"
"begin\n"
"select count(*) into counter from mthrec_dpflow_ems %s;\n"
"if counter=0 then\n"
"insert into mthrec_dpflow_ems(year,month,id, calnum, converg, rate) values(%d,%d,'%s',0,0,0);\n"
"end if;\n"
"update mthrec_dpflow_ems set calnum=calnum+1,converg=converg+%d %s;\n"
"update mthrec_dpflow_ems set rate=100*converg/calnum %s;\n"
"commit;\n"
"end;\n",
time_str, year, mon, ymstr, con_state, time_str, time_str);
vector<T_Corba_Props> props_all;
props_all.resize(2);
strcpy(props_all[0].prop_name , "ooc.orb.policy.connect_timeout");
strcpy(props_all[0].prop_value, "2000");
strcpy(props_all[1].prop_name , "ooc.orb.policy.request_timeout");
strcpy(props_all[1].prop_value, "30000");
CDbCommitClient * db_commit_client = new CDbCommitClient(AP_DB_SERVICE,
1,
PORT_DB_COMMIT_SAMPLE,
"db_commit_sample_server",
props_all,
AC_REALTIME_NO,
"DPFLOW_MONTH");
if(NULL == db_commit_client)
{
TRACE("fail to connect db_commit_server.\n");
return -1;
}
TCommitStru commit_sql_stru;
commit_sql_stru.seqSqlCommit.length(1);
commit_sql_stru.seqSqlCommit[0].strSql.length(1);
TRACE("++++ Log month rec : commit sql = %s\n", sql_str);
commit_sql_stru.seqSqlCommit[0].strSql[0] = CORBA::string_dup(sql_str);
return db_commit_client->SqlCommit(commit_sql_stru);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -