?? 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 + -