📄 net_login.c
字号:
/*=============================================================
功能:
作者:
王永忠:2001/03/29:规范程序设计
周国祥 2001/04/05 修改有关jgbm_base==>bank_base
===============================================================*/
#include <time.h>
#include <sys/types.h>
#include "all.h"
#include "msgapi.h"
#include "macro_def.h"
#include "db_struct_c.h"
/***************************************************************
功能:
分行向中心签到或签退
ENTRY:
log_flag 签到或签退标志
PUBLIC结构
RETURN:
0:签到或签退成功
-1:读本地参数表失败
-2:读分行技术资料失败
-3:申请消息队列出错
-4:向消息队列注册失败或发送消息失败
-5:接收消息失败
-6:响应码非00
-7:申请共享内存错
****************************************************************/
int netlog_proc ( int log_flag , PUBLIC *pub_ptr )
{
S_sys_param sys;
struct tm *tm;
time_t t;
int Resp_msgid , Req_msgid;
int i;
S_bank_base bank;
memset ( pub_ptr , '\0' , sizeof(PUBLIC) );
strcpy( pub_ptr->Msg_id , "0800" );
if ( log_flag == 0 )
pub_ptr->Tran_type = NET_LOGIN;
else
pub_ptr->Tran_type = NET_LOGOUT;
if ( select_sys_param ( &sys ) < 0 ) {
errcall ( ERROR , "Unable select sys_param !" );
return -1;
}
/*
* 应向管辖行NAS主机签到
*/
if ( !strcmp( sys.adm_bank_id, sys.bank_id ) &&
!strcmp( sys.adm_host_id, sys.host_id ) ) {
errcall( ERROR, "Not login myself!" );
return -1;
}
#ifdef zgx010429_modi
sprintf ( pub_ptr->Rcv_bank_id , "%11.11s", sys.adm_bank_id );
sprintf ( pub_ptr->Rcv_host_id , "%2.2s", sys.adm_host_id );
sprintf ( pub_ptr->Snd_bank_id , "%11.11s", sys.bank_id );
sprintf ( pub_ptr->Snd_host_id , "%2.2s", sys.host_id );
sprintf ( pub_ptr->Iss_bank_id , "%11.11s", sys.adm_bank_id );
sprintf ( pub_ptr->Acq_bank_id , "%11.11s", sys.bank_id );
sprintf ( pub_ptr->Bank_id, "%11.11s", sys.bank_id );
sprintf ( pub_ptr->Host_id, "%2.2s", sys.host_id );
#else
sprintf ( pub_ptr->Rcv_bank_id , "%s", sys.adm_bank_id );
sprintf ( pub_ptr->Rcv_host_id , "%s", sys.adm_host_id );
sprintf ( pub_ptr->Snd_bank_id , "%s", sys.bank_id );
sprintf ( pub_ptr->Snd_host_id , "%s", sys.host_id );
sprintf ( pub_ptr->Iss_bank_id , "%s", sys.adm_bank_id );
sprintf ( pub_ptr->Acq_bank_id , "%s", sys.bank_id );
sprintf ( pub_ptr->Acq_host_id , "%s", sys.host_id );
sprintf ( pub_ptr->Bank_id, "%s", sys.bank_id );
sprintf ( pub_ptr->Host_id, "%s", sys.host_id );
#endif
/*
* 获取管辖行技术资料
*/
strcpy ( bank.bank_id , sys.adm_bank_id );
strcpy ( bank.host_id , sys.adm_host_id );
if ( select_bank ( &bank ) < 0 ) {
errcall(ERROR, "Unable select %s[%s]'s ipaddr!", bank.bank_id, bank.host_id);
return -2;
}
strcpy(pub_ptr->Nas_version, bank.nas_version);
strcpy(pub_ptr->Rcv_ip_addr1, bank.tran_ip_addr1);
strcpy(pub_ptr->Rcv_ip_addr2, bank.tran_ip_addr2);
#ifdef DEBUG1
errcall(ERROR, "%s %s", pub_ptr->Rcv_ip_addr1, bank.tran_ip_addr1);
#endif
time ( &t );
tm = localtime ( &t );
sprintf ( pub_ptr->Local_sys_date , "%04d%02d%02d" , tm->tm_year+1900 ,
tm->tm_mon+1 , tm->tm_mday );
sprintf ( pub_ptr->Local_sys_time , "%02d%02d%02d" , tm->tm_hour , tm->\
tm_min , tm->tm_sec );
sprintf ( pub_ptr->Tran_sys_time , "%4.4s%6.6s", \
pub_ptr->Local_sys_date+4, pub_ptr->Local_sys_time );
Req_msgid = gmsg_nonb ( REQ_MSG );
Resp_msgid = gmsg_nonb ( RESP_MSG );
if ( Req_msgid < 0 || Resp_msgid < 0 ) {
errcall ( ERROR , "Unable gmsg_nonb Req or Resp msg !" );
return -3;
}
pub_ptr->Source_msg_type = getpid ();
if ( message_r_login ( Resp_msgid , pub_ptr->Source_msg_type ) < 0 ) {
errcall ( ERROR , "Unable message login !" );
return -4;
}
/*
* 发送签到/签退交易
*/
if ( ( i= message_send ( Req_msgid , (char *)pub_ptr , sizeof(PUBLIC) ,
TONAS_HOSTID , 3 , 0 ) ) < 0 ) {
errcall ( ERROR , "Unable send message (%d) !" , i );
return -4;
}
/*
* 等待应答
*/
i = message_recv ( Resp_msgid , (char *)pub_ptr , sizeof(PUBLIC) , \
&(pub_ptr->Source_msg_type) , 60 , AUTO_LOGOUT );
if ( i < 0 ) {
message_r_logout ( Resp_msgid , pub_ptr->Source_msg_type );
errcall ( ERROR , "Unable recv message (%d) !" , i );
strcpy ( pub_ptr->Resp_code, TIME_OUT);
return -5;
}
if (memcmp(pub_ptr->Resp_code, SUCCESS, 2)) {
errcall ( ERROR , "Unable net login (%s) !" , pub_ptr->Resp_code);
return -6;
}
#ifndef zgx010518_added_for_nss
if (log_flag == 0) {
if (write_net_key(pub_ptr) < 0) {
errcall ( ERROR , "Unable write net key! bank:%s(%s), Add_data:%s !" , pub_ptr->Resp_bank_id, pub_ptr->Resp_host_id, pub_ptr->Add_data);
return -6;
}
}
#endif
/*
* 置签到签退状态标志
*/
if ( log_flag == 0 )
set_login_stat ( sys.adm_bank_id, sys.adm_host_id,'I' );
else
set_login_stat ( sys.adm_bank_id, sys.adm_host_id,'O' );
/*
* 联行签到签退状态监控
*/
get_bank_stat_moni ();
/************
if ( getipc () < 0 ) {
errcall ( ERROR , "Unable get shm1 !" );
return -7;
}
************/
/*
* 告诉网络监控进程需要重新装载状态信息
*/
set_reload_num ();
/*
* 唤醒监控进程
*/
wackup_moni ();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -