⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hostserdo.ec

📁 证券交易系统
💻 EC
字号:
/* HostSerDo.c * This program read a line in the file which name is trade code  * and send back to Branch Host */#include <stdio.h>#include <signal.h>#include <errno.h>#include <ctype.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/msg.h>#include <sys/signal.h>#include <sys/shm.h>#include "../incl/HostSer.h"#include "../incl/bank.h"$include  sqlca;extern void TimeOutDo(int);extern int  get_trcode(char *,char *);extern $char stockdb1[20];int  newsockfd;extern long test;HostSerDo(newfd,package)int   newfd;char *package;{	int  retval,jym,test_len;        int  flags,len,flag;        char trcode[5];        char recvdata[1000];	char backdata[3000];       $int t_on_off;    	FILE *fp;	signal(SIGALRM,TimeOutDo);	alarm(TIMEOUT);	memset(( char * )recvdata,'\0',sizeof(recvdata));	memset(( char * )backdata,'\0',sizeof(backdata));        newsockfd = newfd;        retval = SockRcv(newsockfd,recvdata);	if(retval < 0)	{           WriteLog ( LOGFILE,"接收数据出错");           strcpy ( send_net.retcode,"8001");           strcpy ( send_net.errmsg,"接收数据出错");   	   return(-1);	}/*****	if (strncmp(recvdata,"TRANS_TYPE=0210",15) !=0)	sprintf(recvdata,"TRANS_TYPE=0202|ACCO_TYPE=0|ACCOUNT=4367420013480000144|AMOUNT=10.00|REQ_SERIAL=%015d|TIME=140105|",test);*****/        WriteLog(LOGFILE,"HostSer:receive data [%s]\n",recvdata);        get_trcode(trcode,recvdata);        trcode[4]='\0';        if ( !memcmp ( trcode,"0210",4 ) ||             !memcmp ( trcode,"0211",4 ) ||             !memcmp ( trcode,"0212",4 ) ||             !memcmp ( trcode,"0206",4 ) ||             !memcmp ( trcode,"0202",4 ) ||             !memcmp ( trcode,"0201",4 ) ||             !memcmp ( trcode,"0213",4 ) ||             !memcmp ( trcode,"0214",4 ) )        {           jym=atoi(trcode);        }        else        {            strcpy ( send_net.retcode,"8001");            strcpy ( send_net.errmsg,"交易类型错");            return(-1);        }	$connect to $stockdb1;        if ( sqlca.sqlcode ) {             WriteLog ( LOGFILE, "Open database stock err[%d]!\n",sqlca.sqlcode);             strcpy ( send_net.retcode,"8999");             strcpy ( send_net.errmsg,"打开数据库出错");             return( -1 );        }        EXEC SQL SELECT    on_off                   INTO   $t_on_off                   FROM    t_worker_sign;        if(sqlca.sqlcode)        {             WriteLog ( LOGFILE, "database stock err[%d]!\n",sqlca.sqlcode);             strcpy ( send_net.retcode,"8999");             strcpy ( send_net.errmsg,"select stock err");             $disconnect current;             return( -1 );        }        if (t_on_off != 1 && jym != 210 && jym != 211 && jym != 214)        {             WriteLog ( LOGFILE, "worker status is not right!\n");             strcpy ( send_net.retcode,"8003");             strcpy ( send_net.errmsg,"柜员未签到");             /*$ close database;*/             $disconnect current;             return( -1 );        }         $disconnect current;        if ( sqlca.sqlcode )        {             WriteLog ( LOGFILE, "Close database stock err[%d]!\n",sqlca.sqlcode );             strcpy ( send_net.retcode,"8999");             strcpy ( send_net.errmsg,"关闭数据库出错");             return( -1 );        }        switch(jym)        {           case 210:                      flag = net_tohost_0210(newsockfd,recvdata,backdata);                      if( flag != 0 ) return (-1);                      strcpy(package,backdata);                        return 0;           case 211:                      flag = net_tohost_0211(newsockfd,recvdata,backdata);                      if( flag != 0 ) return (-1);                      strcpy(package,backdata);                        return 0;           case 212:                      flag = net_tohost_0212(newsockfd,recvdata,backdata);                      if( flag != 0 ) return (-1);                      strcpy(package,backdata);                        return 0;           case 206:                      flag = net_tohost_0206(newsockfd,recvdata,backdata);                      if( flag != 0 ) return (-1);                      strcpy(package,backdata);                        return 0;           case 202:                      flag = net_tohost_0202(newsockfd,recvdata,backdata);                      if( flag != 0 ) return (-1);                      strcpy(package,backdata);                        return 0;           case 201:                      flag = net_tohost_0201(newsockfd,recvdata,backdata);                      if( flag != 0 ) return (-1);                      strcpy(package,backdata);                        return 0;           case 213:                      flag = net_tohost_0213(newsockfd,recvdata,backdata);                      if( flag != 0 ) return (-1);                      strcpy(package,backdata);                        return 0;           case 214:                      flag = net_tohost_0214(newsockfd,recvdata,backdata);                      if( flag != 0 ) return (-1);                      strcpy(package,backdata);                      return 0;           default :                      break;        }        return 0;}err_pro1(errmsg)char *errmsg;{   int retval = 0;   fprintf(stderr,errmsg);   DisConSvr(newsockfd);}void TimeOutDo(int signo){	fprintf(stderr,"HostSer TimeOut\n");	return ;}int get_trcode(trcode,recvdata)char *trcode;char *recvdata;{    int i =0;    for(i=0;i<4;i++)       trcode[i] = *(recvdata+11+i);    trcode[4] = '\0';    return 0;}int get_host_trace( char* host_trace ){        $int hostls;                $SET LOCK MODE TO WAIT;        $begin work;        if( sqlca.sqlcode != 0 )        {             WriteLog( LOGFILE,                     "begin work error in function[get_host_trace]!--[%d]--\n",                     sqlca.sqlcode );             return( -1 );        }        $update t_host_ls set hostls=hostls+1;        if( sqlca.sqlcode != 0 )        {             WriteLog(LOGFILE,                     "update t_host_ls error ! errcode[%d][%d]",                     sqlca.sqlcode, sqlca.sqlerrd[1]);             $rollback work;             return(-1);        }        $select hostls into $hostls from t_host_ls;        if( sqlca.sqlcode != 0 )        {             WriteLog(LOGFILE, "select hostls error !errcode[%d]",                      sqlca.sqlcode);             $rollback work;             return(-1);        }        $commit work;        if( sqlca.sqlcode != 0 )        {             WriteLog( LOGFILE,                     "commit work error in function[get_host_trace]!--[%d]--\n",                      sqlca.sqlcode );             $rollback work;             return( -1 );        }        $SET LOCK MODE TO NOT WAIT;        sprintf(host_trace,"%06d",hostls);        return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -