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

📄 butility.h

📁 本源码为移动公司话费查询中间件TUXEDO使用的实例
💻 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 + -