📄 butility.h
字号:
//#include "msgdefine.h"/*测试定义*/#ifdef DEBUG #define PASSLINE cout<<"文件:"<<__FILE__<<"\t"<<"行数:"<<__LINE__<<endl; /*for C++*/ #define LOGPASSLINE userlog("文件:%s;\t行数:%d!\n",__FILE__,__LINE__); /*for C */#else #define PASSLINE #endif#define DATAPATH "./data/"/*输入输出写入文件*/#define INPUT FILE * infp; char inpath[50] = DATAPATH ; strcat(inpath,strSvcName); if(!(infp = fopen(inpath,"a+b"))) userlog("打开输入文件 %s 失败!\n",strSvcName); \ else { fprintf(infp,"\n--------------------------------Service:%s:Input FML--------------------------------------\n",strSvcName); Ffprint(transf,infp);} fclose(infp);#define OUTPUT FILE * outfp;char outpath[50] = DATAPATH ; strcat(outpath,strSvcName); if(!(outfp = fopen(outpath,"a+b"))) userlog("打开输出文件 %s 失败!\n",strSvcName); \ else { fprintf(outfp,"--------------------------------Service:%s:Output FML--------------------------------------\n",strSvcName); Ffprint(transf,outfp);} fclose(outfp);/*服务开始标志*/#define SERVICESTART userlog("服务%s开始.........\n",strSvcName); /*同步和会话结束标志*/#define SYNSERVICEEND userlog("服务%s调用成功......!\n",strSvcName);#define CONSERVICEEND userlog("服务%s调用成功,共发送%d条数据......!\n",strSvcName,lSumCnt);/*同步、会话分配FML缓存失败处理*/#define SYNALLOCFAIL \ { userlog("服务%s:分配FML缓存失败....调用失败!\n",strSvcName); \ strcpy(strErrNo,strAllocFail); \ sprintf(strErrInfo,"服务%s:分配FML缓存失败",strSvcName); \ transf = transftemp; \ SETRETURN(transf,strErrNo,strErrInfo) \ tpreturn(TPFAIL,0,rqst->data,0L,0L); \ }#define CONALLOCFAIL \ { userlog("服务%s:分配FML缓存失败....调用失败!\n",strSvcName); \ strcpy(strErrNo,strAllocFail); \ sprintf(strErrInfo,"服务%s:分配FML缓存失败",strSvcName); \ transf = transftemp; \ SETRETURN(transf,strErrNo,strErrInfo) \ SEND() \ tpreturn(TPFAIL,0,rqst->data,0L,0L); \ } /*同步、会话必须参数项不足处理*/#define SYNLACKARGV \ { userlog("服务%s: 输入参数不全,调用失败!\n",strSvcName); \ strcpy(strErrNo,strLackArgv); \ sprintf(strErrInfo,"服务%s:输入参数不全",strSvcName); \ SETRETURN(transf,strErrNo,strErrInfo) \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-3L,(char *)transf,0,0);} #define CONLACKARGV \ { userlog("服务%s: 输入参数不全,调用失败!\n",strSvcName); \ strcpy(strErrNo,strLackArgv); \ sprintf(strErrInfo,"服务%s:输入参数不全",strSvcName); \ SETRETURN(transf,strErrNo,strErrInfo) \ SEND() \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0); \ }/*会话连接失败处理*/#define CONTPCONNECTFAIL \ { userlog("服务%s:建立同%s服务的连接失败tpconnect, tperrno[%d],\n tpstrerror[%s]\n",strSvcName,servicename,tperrno,tpstrerror(tperrno)); \ strcpy(strErrNo,strConnectFail); \ sprintf(strErrInfo,"服务%s:建立同%s服务的连接失败",strSvcName,servicename); \ SETRETURN(transf,strErrNo,strErrInfo) \ userlog("服务%s失败............!\n",strSvcName); \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0L); \ }/*发送数据*/#define SEND() if(tpsend(iSendCD,(char *)transf,NULL,NULL,&revent) == -1) SENDFAILDEAL/*发送数据失败处理*/#define SENDFAILDEAL \ if ( (tperrno == TPEEVENT) && ((int)revent == TPEV_DISCONIMM)) \ {userlog("服务%s,会话异常断开!\n",strSvcName); \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPSUCCESS,0L,NULL,0L,0); \ } \ else \ { userlog("服务%s: tpsend failed tperrno[%d] tpstrerror[%s] revent [%ld]",strSvcName,tperrno,tpstrerror(tperrno),revent); \ sprintf(strErrInfo,"服务%s,发送数据失败:tpsend()",strSvcName); \ Fchg(transf,ERRINFO,(FLDOCC)0,(char *)strErrInfo,(FLDLEN)0); \ Fchg(transf,ERRNO,(FLDOCC)0,strSendataFail,(FLDLEN)0); \ userlog("服务%s:失败............!\n",strSvcName); \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-5L,(char *)transf,0L,0); \ }/*接受数据失败处理*/#define RECVFAILDEAL \ if(tperrno == TPEEVENT && ((int)revent == TPEV_SVCFAIL)) \ { \ if(tpsend(iSendCD,(char *)transf,NULL,NULL,&revent) == -1) SENDFAILDEAL \ userlog("服务%s失败............!\n",strSvcName);\ tpreturn(TPFAIL,-3L,(char *)transf,0L,0L); \ } \ if (tperrno != TPEEVENT || ((int)revent != TPEV_SVCSUCC )) \ { \ userlog("服务%s:调用%s服务失败, tperrno[%d], \n tpevent[%d] tpstrerror[%s], tpurcode[%d]\n",strSvcName,servicename,tperrno,revent,tpstrerror(tperrno),tpurcode);\ strcpy(strErrNo,strRecvdataFail); \ sprintf(strErrInfo,"服务%s:接受%s服务数据失败",strSvcName,servicename); \ SETRETURN(transf,strErrNo,strErrInfo) \ if(tpsend(iSendCD,(char *)transf,NULL,NULL,&revent) == -1) SENDFAILDEAL \ userlog("服务%s失败............!\n",strSvcName); \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0L); \ } /*连接接受发送数据处理*/#define CONRECSENDEAL \ if ((iRecvCD = tpconnect((char *)servicename,(char *)transf,0,TPRECVONLY)) == -1) CONTPCONNECTFAIL \ while(tprecv(iRecvCD,(char **)&transf,(long *)&len,NULL,&revent) != -1) \ { \ if(tpsend(iSendCD,(char *)transf,0,TPSIGRSTRT,&revent) == -1) \ { \ userlog("服务%s:调用%s服务, 测试tperrno[%d], \n tpevent[%d] tpstrerror[%s], tpurcode[%d]\n",strSvcName,servicename,tperrno,revent,tpstrerror(tperrno),tpurcode); \ if(tperrno == TPEEVENT && (int)revent == TPEV_SVCFAIL) \ { \ if(tpsend(iSendCD,(char *)transf,NULL,NULL,&revent) == -1) SENDFAILDEAL \ userlog("服务%s失败............!\n",strSvcName); \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0L); \ } \ if (tperrno != TPEEVENT || (int)revent != TPEV_SVCSUCC ) \ { \ userlog("服务%s:调用%s服务失败, tperrno[%d], \n tpevent[%d] tpstrerror[%s], tpurcode[%d]\n",strSvcName,servicename,tperrno,revent,tpstrerror(tperrno),tpurcode); \ strcpy(strErrNo,strRecvdataFail); \ sprintf(strErrInfo,"服务%s:接受%s服务数据失败",strSvcName,servicename); \ SETRETURN(transf,strErrNo,strErrInfo) \ if(tpsend(iSendCD,(char *)transf,NULL,NULL,&revent) == -1) SENDFAILDEAL \ userlog("服务%s失败............!\n",strSvcName); \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0L); \ } \ } \ else \ {SYNSERVICEEND \ } \ } \ userlog("服务%s执行完毕!!!!!!!!!\n",strSvcName); \ if( tpcommit(0) == -1){userlog("tpcommit()---提交服务失败!:[%s]",tpstrerror(tperrno));tpreturn(TPFAIL, -1, (char *)transf, 0 ,0);} \ tpreturn(TPSUCCESS,0L,(char *)transf,0L,0L);/*同步、会话调用*/#define SYNCALL() if (tpcall( servicename, (char *)transf, 0L, (char **)&transf, (long *)&len, 0L) == -1) SYNTPCALLFAIL /*tpcall() 返回-1时;1.当subordinate使TPFAIL返回时,2.其他异常情况返回时*/#define CONCALL() if (tpcall( servicename, (char *)transf, 0L, (char **)&transf, (long *)&len, 0L) == -1 ) CONTPCALLFAIL/*同步调用失败处理*/#define SYNTPCALLFAIL \ { userlog("服务%s:调用%s服务失败, tperrno[%d], \n tpstrerror[%s], tpurcode[%d]\n",strSvcName,servicename,tperrno,tpstrerror(tperrno),tpurcode); \ if( tperrno == TPESVCFAIL ) \ {if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0L);} \ else { \ /*strcpy(strErrNo,strCallFail); \ sprintf(strErrInfo,"服务%s:调用%s服务失败",strSvcName,servicename); \ SETRETURN(transf,strErrNo,strErrInfo)*/userlog("服务%s失败............!\n",strSvcName); \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0L); \ }}/*会话调用失败处理*/#define CONTPCALLFAIL \ { userlog("服务%s:调用%s服务失败, tperrno[%d], \n tpstrerror[%s], tpurcode[%d]\n",strSvcName,servicename,tperrno,tpstrerror(tperrno),tpurcode); \ if( tperrno == TPESVCFAIL ) \ {if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0L);} \ else \ {strcpy(strErrNo,strCallFail); \ sprintf(strErrInfo,"服务%s:调用%s服务失败",strSvcName,servicename); \ SETRETURN(transf,strErrNo,strErrInfo) SEND() \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ userlog("服务%s失败............!\n",strSvcName); \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0L);}} /*提示信息*/#define SYNKEYINFO(mphonecode,strkey) userlog("电话号码:[%s];业务关键字:[%s]\n", mphonecode, strkey); #define SYNMTRADE userlog("mtradeid:[%s] mtradetime[%s]\n", mtradeid,mtradetime); #define CONKEYINFO(strkey1,strkey2) userlog("服务关键字1[%s],关键字2[%s]",strkey1,strkey2); /*数据库操作*//*存储过程执行信息*/#define PROCEXCINFO userlog("服务%s: 存储过程执行结果,sqlcode:[%d],iRet:[%d],strErrInfo:[%s]\n",strSvcName,sqlca.sqlcode,iRet,strErrInfo);/*同步存储过程执行失败处理*/#define SYNPROCEXCFAIL \ { userlog("服务%s: 存储过程运行失败, 返回值:%d, 返回信息:%s, 手机号:%s\n",strSvcName,iRet,strErrInfo,mphonecode);\ strcpy(strErrNo,strProcExcFail); \ sprintf(strErrInfo+strlen(strErrInfo),"服务%s:存储过程调用失败,过程返回值:[%d]",strSvcName,iRet); \ userlog("错误信息:[%s]",strErrInfo); \ SETRETURN(transf,strErrNo,strErrInfo) \ sql_err(strErrInfo,(FBFR *)transf); \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0); \ } /*会话存储过程执行失败处理*/#define CONPROCEXCFAIL \ { userlog("服务%s: 存储过程运行失败, 返回值:%d, 返回信息:%s\n",strSvcName,iRet,strErrInfo); \ strcpy(strErrNo,strProcExcFail); \ SETRETURN(transf,strErrNo,strErrInfo) \ if(tpsend(iSendCD,(char *)transf,NULL,TPNOBLOCK,&revent) == -1)SENDFAILDEAL \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,(long)iRet,(char *)transf,0L,0); \ }/*同步调用数据库操作失败处理*/#define SYNDATABASEFAIL \ { sprintf(strErrInfo,"服务%s(-4):存储过程报错,异常信息:sqlca.sqlcode= [%d]",strSvcName,sqlca.sqlcode); \ sql_err(strErrInfo,(FBFR *)transf); \ Fchg(transf,ERRNO,(FLDOCC)0,strDatabaseFail,(FLDLEN)0); \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0);}/*会话调用数据库操作失败处理*/ #define CONDATABASEFAIL \ { sprintf(strErrInfo,"服务%s(-4):数据库操作失败\t异常信息sqlca.sqlcode= [%d]",strSvcName,sqlca.sqlcode); \ sql_err(strErrInfo,(FBFR *)transf); \ Fchg(transf,ERRNO,(FLDOCC)0,strDatabaseFail,(FLDLEN)0); \ SEND() \ if(tpabort(0) == -1) {userlog("tpabort()---回滚事务失败:[%s]",tpstrerror(tperrno));} \ tpreturn(TPFAIL,-4L,(char *)transf,0L,0); \ }/*警告提示信息*/ #define DBWARNING userlog("服务%s: warning--sqlca.sqlcode is -1405\n",strSvcName); /*存储过程成功执行*/#define PROCEXCSUCCESS userlog("服务%s: 存储过程正确执行,sqlcode: %d, iRet: %d, strErrInfo: %s\n",strSvcName,sqlca.sqlcode,iRet,strErrInfo);/*服务成功处理*/#define SUCCESSDEALWITH { strcpy(strErrNo,strSuccess);sprintf(strErrInfo,"服务%s:调用成功",strSvcName);SETRETURN(transf,strErrNo,strErrInfo) }/*赋值出错处理*/#define SYNASSIGNFAIL \ { userlog("服务%s:设置返回值出错,Ferror:%d--Fstrerror%s\n",strSvcName,Ferror,Fstrerror(Ferror)); \ sprintf(strErrInfo,"服务%s:设置返回值出错,Ferror:%d--Fstrerror%s\n",strSvcName,Ferror,Fstrerror(Ferror)); \ strcpy(strErrNo,strAssignFail); \ SETRETURN(transf,strErrNo,strErrInfo) \ sql_err(strErrInfo,(FBFR *)transf); \ userlog("服务%s失败............!\n",strSvcName); \ tpreturn(TPFAIL,-3L,(char *)transf,0L,0); \ }/*错误编码信息赋、取值*/#define SETRETURN(transf,strErrNo,strErrInfo) \ {Fchg(transf,ERRNO,(FLDOCC)0,strErrNo,(FLDLEN)0); Fchg(transf,ERRINFO,(FLDOCC)0,strErrInfo,(FLDLEN)0);} #define GETRETURN(transf,strErrNo, strErrInfo) \ { Fget(transf,ERRNO, (FLDOCC)0, strErrNo,(FLDLEN *)NULL); Fget(transf,ERRINFO,(FLDOCC)0,strErrInfo,(FLDLEN *)NULL);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -