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

📄 cdrwritecombined.cpp

📁 Mysql的处理
💻 CPP
字号:
/*********************************************************************** * Module:  CExceptionADO.h * Author:  asus * Modified: 2006年4月27日 10:35:46 * Purpose: Declaration of the class CExceptionADO * Comment: 合并数据的接口类 ***********************************************************************/#include "CDRWriteCombined.h"#include<stdio.h>#include<stdlib.h>#include<string.h>C_CDRWriteCombined::C_CDRWriteCombined(){	}C_CDRWriteCombined::~C_CDRWriteCombined(){	}void C_CDRWriteCombined::ClearArray(vector<S_InsertArray*> *vChange){	int i,all;	if(vChange != NULL)	{		all = vChange->size();		for(i=0;i< all;i++)		{			S_InsertArray* p = vChange->at(i);			if(p != NULL)			{				delete p;				p = NULL;			}		}		vChange->clear();	}}void C_CDRWriteCombined::ClearArrays(	vector<S_InsertArray*> *vCdr,	vector<S_InsertArray*> *vChange,	vector<S_InsertArray*> *vLlotv,	vector<S_InsertArray*> *vLcomm){	ClearArray(vCdr);	ClearArray(vChange);	ClearArray(vLlotv);	ClearArray(vLcomm);}bool C_CDRWriteCombined::InsertSCDR(S_CSCDR* pCDR,  int nCdrs,									S_LCLOC* pChanageLoc, int nChangeLoc,									S_LLOTV* pLOTV, int nLOTV,									S_LCOMM* pCommon, int nCommon,									int nFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99									char szTableDate[10],									char pOutSzSeqId[21]){	int i;	int result;	snprintf(szTableDate, 20, "%s", GetSysdate());	snprintf(pCDR->TableName, LEN_TABLENAME+1, "CSCDR%s", szTableDate);	if((result = DbCSCDRInsert(pCDR, &m_Out)) != SQL_OK)	{		return false;	}	char szSeqId[LEN_SEQ+1];	snprintf(szSeqId, LEN_SEQ+1, "%s", pCDR->SeqId);	for(i=0;i<nLOTV;i++)	{		snprintf(pLOTV[i].TableName, LEN_TABLENAME+1, "LLOTV_CS%s", szTableDate);		snprintf(pLOTV[i].SeqId, LEN_SEQ+1, "%s", szSeqId);		if((result = DbLLOTVInsert(&pLOTV[i], &m_Out)) != SQL_OK)		{			return false;		}	}	for(i=0;i<nCommon;i++)	{		snprintf(pCommon[i].TableName, LEN_TABLENAME+1, "LCOMM_CS%s", szTableDate);		snprintf(pCommon[i].SeqId, LEN_SEQ+1, "%s", szSeqId);		if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK)		{			return false;		}	}	Commit();#ifdef UUU_1	int i1;	int result;		vector<S_InsertArray*> vCdr;	vector<S_InsertArray*> vChange;	vector<S_InsertArray*> vLlotv;	vector<S_InsertArray*> vLcomm;	for(i1=0;i1<nCdrs;i1++)	{		S_InsertArray* p = new S_InsertArray;		memset(p,0, sizeof(S_InsertArray));		snprintf(p->SeqId, 20, "%s", pCDR[i1].SeqId);		p->bRead = false;		vCdr.push_back(p);	//	cout << "SCDR " <<i << "#" << p->SeqId<< "#" << endl;	}	for(i1=0;i1<nLOTV;i1++)	{		S_InsertArray* p = new S_InsertArray;		memset(p,0, sizeof(S_InsertArray));		snprintf(p->SeqId, 20, "%s", pLOTV[i1].SeqId);		p->bRead = false;		vLlotv.push_back(p);	//	cout << "nLOTV " <<i << "#" << p->SeqId<< "#" << endl;	}	for(i1=0;i1<nCommon;i1++)	{		S_InsertArray* p = new S_InsertArray;		memset(p,0, sizeof(S_InsertArray));		snprintf(p->SeqId, 20, "%s", pCommon[i1].SeqId);		p->bRead = false;		vLcomm.push_back(p);	//	cout << "nCommon " <<i << "#" << p->SeqId << "#"<< endl;	}	int jj;	int i;	for(jj=0;jj<nCdrs;jj++)	{		snprintf(szTableDate, 20, "%s", GetSysdate());		snprintf(pCDR[jj].TableName, LEN_TABLENAME+1, "CSCDR%s", szTableDate);			//	printf("@@@%s@@@\n", pCDR[i].LevelOfCamelService);		if((result = DbCSCDRInsert(&pCDR[jj], &m_Out)) != SQL_OK)		{			ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);			return false;		}				char szSeqId[LEN_SEQ+1];		snprintf(szSeqId, LEN_SEQ+1, "%s", m_Out.SeqId);					S_InsertArray* pTemp = vCdr.at(jj);		char* szSeqId2 = pTemp->SeqId;				for(i=0;i<nLOTV;i++)		{			S_InsertArray *p = vLlotv.at(i);			if(!p->bRead && strcmp(szSeqId2, p->SeqId) == 0)			{				p->bRead = true;								//满足要求,则插入相应的表中				snprintf(pLOTV[i].TableName, LEN_TABLENAME+1, "LLOTV_CS%s", szTableDate);				snprintf(pLOTV[i].SeqId, LEN_SEQ+1, "%s", szSeqId);				if((result = DbLLOTVInsert(&pLOTV[i], &m_Out)) != SQL_OK)				{					ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);					return false;				}			}		}				for(i=0;i<nCommon;i++)		{			S_InsertArray *p = vLcomm.at(i);			if(!p->bRead && strcmp(szSeqId2, p->SeqId) == 0)			{				p->bRead = true;								snprintf(pCommon[i].TableName, LEN_TABLENAME+1, "LCOMM_CS%s", szTableDate);				snprintf(pCommon[i].SeqId, LEN_SEQ+1, "%s", szSeqId);				if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK)				{					ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);					return false;				}			}		}	}	Commit();	ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);#endif	return true;}bool C_CDRWriteCombined::InsertGCDR(S_CGCDR* pCDR,  int nCdrs,		S_LCLOC* pChanageLoc, int nChangeLoc,		S_LLOTV* pLOTV, int nLOTV,		S_LCOMM* pCommon, int nCommon,		int nFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99		char szTableDate[10],		char pOutSzSeqId[21]){	int i;	int result;	snprintf(szTableDate, 20, "%s", GetSysdate());	snprintf(pCDR->TableName, LEN_TABLENAME+1, "CGCDR%s", szTableDate);	if((result = DbCGCDRInsert(pCDR, &m_Out)) != SQL_OK)	{		return false;	}	char szSeqId[LEN_SEQ+1];	snprintf(szSeqId, LEN_SEQ+1, "%s", pCDR->SeqId);	for(i=0;i<nLOTV;i++)	{		snprintf(pLOTV[i].TableName, LEN_TABLENAME+1, "LLOTV_CG%s", szTableDate);		snprintf(pLOTV[i].SeqId, LEN_SEQ+1, "%s", szSeqId);		if((result = DbLLOTVInsert(&pLOTV[i], &m_Out)) != SQL_OK)		{			return false;		}	}	for(i=0;i<nCommon;i++)	{		snprintf(pCommon[i].TableName, LEN_TABLENAME+1, "LCOMM_CG%s", szTableDate);		snprintf(pCommon[i].SeqId, LEN_SEQ+1, "%s", szSeqId);		if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK)		{			return false;		}	}	Commit();#ifdef UUU_1	int i;	int result;	int jj;		vector<S_InsertArray*> vCdr;	vector<S_InsertArray*> vChange;	vector<S_InsertArray*> vLlotv;	vector<S_InsertArray*> vLcomm;	for(i=0;i<nCdrs;i++)	{		S_InsertArray* p = new S_InsertArray;		memset(p,0, sizeof(S_InsertArray));		snprintf(p->SeqId, 20, "%s", pCDR[i].SeqId);		p->bRead = false;		vCdr.push_back(p);//		cout << "SCDR " <<i << "#" << p->SeqId<< "#" << endl;	}	for(i=0;i<nLOTV;i++)	{		S_InsertArray* p = new S_InsertArray;		memset(p,0, sizeof(S_InsertArray));		snprintf(p->SeqId, 20, "%s", pLOTV[i].SeqId);		p->bRead = false;		vLlotv.push_back(p);	//	cout << "nLOTV " <<i << "#" << p->SeqId<< "#" << endl;	}	for(i=0;i<nCommon;i++)	{		S_InsertArray* p = new S_InsertArray;		memset(p,0, sizeof(S_InsertArray));		snprintf(p->SeqId, 20, "%s", pCommon[i].SeqId);		p->bRead = false;		vLcomm.push_back(p);//		cout << "nCommon " <<i << "#" << p->SeqId << "#"<< endl;	}	for(jj=0;jj<nCdrs;jj++)	{		snprintf(szTableDate, 20, "%s", GetSysdate());		snprintf(pCDR[jj].TableName, LEN_TABLENAME+1, "CGCDR%s", szTableDate);			//	cout << "####### " << szTableDate << " #####" << endl;	//	cout << "####### " << pCDR[i].TableName << " #####" << endl;			//	cout << "@@@" <<pCDR[i].CallDuration << "@@@" << endl;		//cout << "@@@" <<pCDR[i].LocationAreaCode << "@@@" << endl;	//	printf("*****%s****\n", pCDR[i].CallDuration);		if((result = DbCGCDRInsert(&pCDR[jj], &m_Out)) != SQL_OK)		{			ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);			return false;		}		char szSeqId[LEN_SEQ+1];		snprintf(szSeqId, LEN_SEQ+1, "%s", m_Out.SeqId);					S_InsertArray* pTemp = vCdr.at(jj);		char* szSeqId2 = pTemp->SeqId;				for(i=0;i<nLOTV;i++)		{			S_InsertArray *p = vLlotv.at(i);			if(!p->bRead && strcmp(szSeqId2, p->SeqId) == 0)			{				p->bRead = true;								//满足要求,则插入相应的表中				snprintf(pLOTV[i].TableName, LEN_TABLENAME+1, "LLOTV_CG%s", szTableDate);				snprintf(pLOTV[i].SeqId, LEN_SEQ+1, "%s", szSeqId);				if((result = DbLLOTVInsert(&pLOTV[i], &m_Out)) != SQL_OK)				{					ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);					return false;				}			}		}		//		printf("TIMES3 = %s\n",szSeqId2);		for(i=0;i<nCommon;i++)		{			S_InsertArray *p = vLcomm.at(i);			if(!p->bRead && strcmp(szSeqId2, p->SeqId) == 0)			{		//		printf("from:%s to:%s \n", szSeqId2, p->SeqId);											p->bRead = true;								snprintf(pCommon[i].TableName, LEN_TABLENAME+1, "LCOMM_CG%s", szTableDate);				snprintf(pCommon[i].SeqId, LEN_SEQ+1, "%s", szSeqId);/*				cout << "CauseForRecordClosing:"<<pCommon[i].CauseForRecordClosing << endl;				cout << "LRSN:"<<pCommon[i].LRSN << endl;				cout << "NodeId:"<<pCommon[i].NodeId << endl;				cout << "RecordExtensions:"<<pCommon[i].RecordExtensions << endl;				cout << "RNC:"<<pCommon[i].RNC << endl;				cout << "RSN:"<<pCommon[i].RSN << endl;				cout << "SeqId:"<<pCommon[i].SeqId << endl;				cout << "SGSNAddr:"<<pCommon[i].SGSNAddr << endl;				cout << "SGSNChange:"<<pCommon[i].SGSNChange << endl;				cout << "SubId:"<<pCommon[i].SubId << endl;				cout << "SystemType:"<<pCommon[i].SystemType << endl;*/				if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK)				{					ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);				//	printf("ERROR\n");					return false;				}			}		}//		printf("TIMES4 = %s\n",szSeqId2);	}//	exit(0);	Commit();	ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);#endif		return true;}void C_CDRWriteCombined::Test(){	S_CSCDR pSCDR;	S_LCLOC pSChanageLoc[2]; 	S_LLOTV pSLOTV[2]; 	S_LCOMM pSCommon[2]; 	int nSLOTV=2;	int nSChangeLoc=2;	int nSCommon=2;	int nSFlagR4V99=1; //0 - normal ; 1 - R4 ; 2- R99	char szSTableDate[10];	char pSOutSzSeqId[21];	memset(&pSCDR,0,sizeof(pSCDR));	memset(pSChanageLoc,0,sizeof(pSChanageLoc));	memset(pSLOTV,0,sizeof(pSLOTV));	memset(pSCommon,0,sizeof(pSCommon));		char a[1000];	memset(a,'1',1000);		memset(&pSCDR,0,sizeof(pSCDR));	memset(&pSChanageLoc,0,sizeof(pSChanageLoc));	memset(&pSLOTV,0,sizeof(pSLOTV));	memset(&pSCommon,0,sizeof(pSCommon));		pSChanageLoc[0].SeqId[0] = '0';	pSLOTV[0].SeqId[0] = '0';	pSCommon[0].SeqId[0] = '0';		pSChanageLoc[1].SeqId[0] = '1';	pSLOTV[1].SeqId[0] = '1';	pSCommon[1].SeqId[0] = '0';	memset(&pSCDR, 0, sizeof(pSCDR));	pSCDR.RecordType = 2;	char NetworkInitiatedPDPContext=1;/*int*/	memcpy(pSCDR.ServedIMSI,"11111111111111111111111111111111",LEN_ServedIMSI);	memcpy(pSCDR.ServedIMEI,"11111111111111111111111111",LEN_ServedIMEI);	memcpy(pSCDR.SGSNIPAddress,"11111111111111111111111111111111111111",46-1);	memcpy(pSCDR.MSNetworkCapability,"12345678",LEN_MSNetworkCapability);	memcpy(pSCDR.RoutingAreaCode,"12345678",9-1);	memcpy(pSCDR.LocationAreaCode,"1234567890123456",17-1);	memcpy(pSCDR.CellIdentity,"123456789012345678901234567",25-1);	memcpy(pSCDR.ChargingID,"1234567890",10);	memcpy(pSCDR.GGSNAddress,"1234567890",46-1);	memcpy(pSCDR.AccessPointNameNI,a,64-1);	memcpy(pSCDR.PDPTypeNumber,a,9-1);	memcpy(pSCDR.ServedPDPAddress,a,46-1);	memcpy(pSCDR.RecordOpenTime,"20001010202020",LEN_DATETIME );	memcpy(pSCDR.CallDuration,a,12);	pSCDR.Diagnostics[0]=1;	pSCDR.APNSelectionMode=1;	memcpy(pSCDR.AccessPointNameOI,a,38-1);	memcpy(pSCDR.ServedMSISDN,a,LEN_ServedMSISDN);	memcpy(pSCDR.ChargingCharacteristics,a,LEN_ChargingCharacteristics);		memcpy(pSCDR.ConsolidationResult,a,3-1);	pSCDR.ChargingCharacterSelectionMode=2;	memcpy(pSCDR.SCFAddress,a,LEN_SCFAddress);	memcpy(pSCDR.ServiceKey,a,10-1);	pSCDR.DefaultTransacHandling=9;	memcpy(pSCDR.CAMELAPNNI,a,64-1);	memcpy(pSCDR.CAMELAPNOI,a,38-1);	memcpy(pSCDR.NumberOfDPEncounter,a,10);	memcpy(pSCDR.LevelOfCamelService,a,3);	memcpy(pSCDR.FreeFormatData,a,160);	pSCDR.FFDAppendIndicator=3;	pSCDR.DefaultSMSHandling=3;	memcpy(pSCDR.CAMELCallingPartyNumber,a,14);	memcpy(pSCDR.CAMELAccessDestinationSubNumber,a,43);	memcpy(pSCDR.CAMELSMSAdress,a,20);	memcpy(pSCDR.SmsReferenceNumber,a,9-1);	memcpy(pSCDR.Diagnostics,a,2);	pSCDR.Diagnostics[2]=0;	pSCDR.DynamicAddressFlag=2;	pSCDR.AnonyAccessIndicator=2;	memcpy(pSCDR.APNOperatorIdentifier,a,37);/* both for R99 & R4 */		printf("=======SCDR==========\n");	InsertSCDR((S_CSCDR*)&pSCDR, 1,		(S_LCLOC*)&pSChanageLoc, nSChangeLoc,		(S_LLOTV*)&pSLOTV, nSLOTV,		(S_LCOMM*)&pSCommon, nSCommon,		nSFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99		szSTableDate,		pSOutSzSeqId);		S_CGCDR pGCDR; 	S_LCLOC pGChanageLoc[2]; 	S_LLOTV pGLOTV[2]; 	S_LCOMM pGCommon[12]; 	int nGLOTV=1;	int nGChangeLoc=1;	int nGCommon=12;	int nGFlagR4V99=1; //0 - normal ; 1 - R4 ; 2- R99	char szGTableDate[10];	char pGOutSzSeqId[21];				printf("S=%s T=%s\n", pSCDR.SeqId, pSCDR.TableName);//	printf("=======GCDR==========\n");			/*		memset(&pGCDR,0,sizeof(pGCDR));	memset(pGChanageLoc,0,sizeof(pGChanageLoc));	memset(pGLOTV,0,sizeof(pGLOTV));	memset(pGCommon,0,sizeof(pGCommon));		memset(&pGCDR, 0, sizeof(pGCDR));	pGCDR.RecordType = 2;	memcpy(pGCDR.ServedIMSI,"11111111111111111111111111111111",LEN_ServedIMSI);//	memcpy(pGCDR.ServedIMEI,"11111111111111111111111111",LEN_ServedIMEI);	memcpy(pGCDR.SGSNIPAddress,"11111111111111111111111111111111111111",46-1);//	memcpy(pGCDR.MSNetworkCapability,"12345678",8);//	memcpy(pGCDR.RoutingAreaCode,"12345678",9-1);//	memcpy(pGCDR.LocationAreaCode,"1234567890123456",17-1);//	memcpy(pGCDR.CellIdentity,"123456789012345678901234567",25-1);	memcpy(pGCDR.ChargingID,"1234567890",10);	memcpy(pGCDR.GGSNAddress,"1234567890",46-1);	memcpy(pGCDR.AccessPointNameNI,a,64-1);	memcpy(pGCDR.PDPTypeNumber,a,9-1);	memcpy(pGCDR.ServedPDPAddress,a,46-1);	memcpy(pGCDR.RecordOpenTime,"20001010202020",LEN_DATETIME );	memcpy(pGCDR.CallDuration,a,12);	pGCDR.Diagnostics[0]=1;	pGCDR.APNSelectionMode=1;//	memcpy(pGCDR.AccessPointNameOI,a,38-1);	memcpy(pGCDR.ServedMSISDN,a,LEN_ServedMSISDN);	memcpy(pGCDR.ChargingCharacteristics,a,LEN_ChargingCharacteristics);		memcpy(pGCDR.ConsolidationResult,a,3-1);	pGCDR.ChargingCharacterSelectionMode=2;//	memcpy(pGCDR.SCFAddress,a,LEN_SCFAddress);//	memcpy(pGCDR.ServiceKey,a,10-1);//	pGCDR.DefaultTransacHandling=9;//	memcpy(pGCDR.CAMELAPNNI,a,64-1);//	memcpy(pGCDR.CAMELAPNOI,a,38-1);//	memcpy(pGCDR.NumberOfDPEncounter,a,10);///	memcpy(pGCDR.LevelOfCamelService,a,3);//	memcpy(pGCDR.FreeFormatData,a,160);//	pGCDR.FFDAppendIndicator=3;//	pGCDR.DefaultSMSHandling=3;//	memcpy(pGCDR.CAMELCallingPartyNumber,a,14);//	memcpy(pGCDR.CAMELAccessDestinationSubNumber,a,43);//	memcpy(pGCDR.CAMELSMSAdress,a,20);//	memcpy(pGCDR.SmsReferenceNumber,a,9-1);	pGCDR.DynamicAddressFlag=7;	pGCDR.AnonyAccessIndicator=2;	snprintf(pGCDR.RemotePdpAddr,45,"192.168.0.1");	snprintf(pGCDR.SgsnPlmnIdentifier, 4, "001");//	memcpy(pGCDR.APNOperatorIdentifier,a,37);	for(int i=0;i<12;i++)	{		pGCommon[i].SeqId[0] = '0';	}		for(int i=0;i<1;i++)	{	InsertGCDR((S_CGCDR*)&pGCDR, 1,		(S_LCLOC*)&pGChanageLoc, nGChangeLoc,		(S_LLOTV*)&pGLOTV, nGLOTV,		(S_LCOMM*)&pGCommon,  nGCommon,		nGFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99		szGTableDate,		pGOutSzSeqId);			printf("S=%s T=%s\n", pGCDR.SeqId, pGCDR.TableName);	}*/	printf("Say Good Bye to CDRWriteCombined.cpp\n");}

⌨️ 快捷键说明

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