cdrwriteasndecode.cpp

来自「Mysql的处理」· C++ 代码 · 共 466 行

CPP
466
字号
#include "CDRWriteASNDecode.h"#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>using namespace std;#include "Base64.h"C_CDRWriteASNDecode::C_CDRWriteASNDecode(){}C_CDRWriteASNDecode::~C_CDRWriteASNDecode(){}/** OSCDR*/	bool C_CDRWriteASNDecode::InsertSCDR(S_OSCDR* pCDR, 		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, "OSCDR%s", szTableDate);	if((result = DbOSCDRInsert(pCDR, &m_Out)) != SQL_OK)	{		return false;	}//	snprintf(pCDR->SeqId, LEN_SEQ+1, "%s",m_Out.SeqId);	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_OS%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_OS%s", szTableDate);		snprintf(pCommon[i].SeqId, LEN_SEQ+1,"%s", szSeqId);		if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK)		{			return false;		}	}*/	return Commit();}bool C_CDRWriteASNDecode::InsertGCDR(S_OGCDR* pCDR, 		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, "OGCDR%s", szTableDate);	if((result = DbOGCDRInsert(pCDR, &m_Out)) != SQL_OK)	{		return false;	}//	snprintf(pCDR->SeqId, LEN_SEQ+1, "%s",m_Out.SeqId);	char szSeqId[LEN_SEQ+1];	snprintf(szSeqId, LEN_SEQ+1, "%s", pCDR->SeqId);	for(i=0;i<nLOTV;i++)	{//		snprintf(pCDR->TableName, LEN_TABLENAME+1, "LLOTV_OG%s", szTableDate);		snprintf(pLOTV[i].TableName, LEN_TABLENAME+1, "LLOTV_OG%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(pCDR->TableName, LEN_TABLENAME+1, "LCOMM_OG%s", szTableDate);		snprintf(pCommon[i].TableName, LEN_TABLENAME+1, "LCOMM_OG%s", szTableDate);		snprintf(pCommon[i].SeqId, LEN_SEQ+1,"%s", szSeqId);		if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK)		{			return false;		}	}	return Commit();}/*bool C_CDRWriteASNDecode::InsertGCDR(S_OGCDR* pCDR, 		S_LCBC* pCBC, int nCBC,		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, "OGCDR%s", szTableDate);	if((result = DbOGCDRInsert(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_OG%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_OG%s", szTableDate);		snprintf(pCommon[i].SeqId, LEN_SEQ+1,"%s", szSeqId);		if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK)		{			return false;		}	}	for(i=0;i<nCBC;i++)	{		snprintf(pCBC[i].TableName, LEN_TABLENAME+1, "LCBC_OG%s", szTableDate);		snprintf(pCBC[i].SeqId, LEN_SEQ+1,"%s", szSeqId);		if((result = DbLCBCInsert(&pCBC[i])) != SQL_OK)		{			return false;		}		for(int j=0;j<pCBC[i].nLLCBC;j++)		{		}	}	return Commit();}*/bool C_CDRWriteASNDecode::InsertMCDR(S_OMCDR* pCDR, 		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, "OMCDR%s", szTableDate);	if((result = DbOMCDRInsert(pCDR, &m_Out)) != SQL_OK)	{		return false;	}//	snprintf(pCDR->SeqId, LEN_SEQ+1, "%s",m_Out.SeqId);	char szSeqId[LEN_SEQ+1];	snprintf(szSeqId, LEN_SEQ+1, "%s", pCDR->SeqId);	for(i=0;i<nChangeLoc;i++)	{//		snprintf(pCDR->TableName, LEN_TABLENAME+1, "LCLOC_OM%s", szTableDate);		snprintf(pChanageLoc[i].TableName, LEN_TABLENAME+1, "LCLOC_OM%s", szTableDate);		snprintf(pChanageLoc[i].SeqId, LEN_SEQ+1,"%s", szSeqId);		if((result = DbLCLOCInsert(&pChanageLoc[i], &m_Out)) != SQL_OK)		{			return false;		}	}	return Commit();}bool C_CDRWriteASNDecode::InsertMOCDR(S_OMOCDR* pCDR, 		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, "OMOCDR%s", szTableDate);	if((result = DbOMOCDRInsert(pCDR, &m_Out)) != SQL_OK)	{		return false;	}//	snprintf(pCDR->SeqId, LEN_SEQ+1, "%s",m_Out.SeqId);	return Commit();}bool C_CDRWriteASNDecode::InsertMTCDR(S_OMTCDR* pCDR, 		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, "OMTCDR%s", szTableDate);	if((result = DbOMTCDRInsert(pCDR, &m_Out)) != SQL_OK)	{		return false;	}//	snprintf(pCDR->SeqId, LEN_SEQ+1, "%s",m_Out.SeqId);	return Commit();}bool C_CDRWriteASNDecode::InsertASNERROR(const char* inSzContent, int inILength, 		const char* inSzGsnId, 		int inICause,		const char* inSzGtpId,		const char* inSzGtpName){	//1.记录类型	m_In.RecordType=0;	//2.内容编码	memset(m_szDest, 0, 4000);	int iBase64Len = base64_encode(m_szDest, inSzContent, inILength);	memcpy(&m_In.Content, m_szDest, iBase64Len);	m_In.Content[iBase64Len]=0;	//3.被操作的表名字 ASNERROR_	snprintf(m_In.TableName, LEN_TABLENAME+1, "ASNERROR_%s", GetSysdate());	//4.出错原因	m_In.Cause=inICause;	//5.网关编号	snprintf(m_In.GsnId, LEN_GSNID+1, "%s", inSzGsnId);	//6.GTPID	snprintf(m_In.GtpId, LEN_SEQ+1, "%s", inSzGtpId);	//7.GTPNAME	snprintf(m_In.GtpName, LEN_TABLENAME+1, "%s", inSzGtpName);	int res = DbASNERRORInsert(&m_In, &m_Out);	return Commit();}	void C_CDRWriteASNDecode::Test(){	S_OSCDR pCDR1;	S_OGCDR pCDR2;	S_OMCDR pCDR3;	S_OMOCDR pCDR4;	S_OMTCDR pCDR5;	S_LCLOC pChanageLoc;	S_LLOTV pLOTV;	S_LCOMM pCommon;	int nFlagR4V99=0;	char pOutSzTableDate[10];	char pOutSzSeqId[21];			int nChangeLoc=1;	int nLOTV=1;	int nCommon=1;			memset(&pCDR1,0,sizeof(pCDR1));	memset(&pCDR2,0,sizeof(pCDR2));	memset(&pCDR3,0,sizeof(pCDR3));	memset(&pCDR4,0,sizeof(pCDR4));	memset(&pCDR5,0,sizeof(pCDR5));	memcpy(pCDR2.RecordOpenTime, "19991010194400",14);		memset(&pChanageLoc,0,sizeof(pChanageLoc));	memset(&pLOTV,0,sizeof(pLOTV));	memset(&pCommon,0,sizeof(pCommon));		for(int i=0;i<2;i++)	{/*	FILE* fp = fopen("qq.txt", "a");	char* pp = (char*)&pCDR1;	fprintf(fp, "\n");	for(int j=0;j<sizeof(S_OSCDR);j++)	{		fprintf(fp,"%02x ", (unsigned char)pp[i]);		if(j%10 == 0)		{			fprintf(fp, "\n");		}	}	fprintf(fp, "\n");	fclose(fp);*/				/*		InsertGCDR(&pCDR2, 		&pChanageLoc, nChangeLoc,		&pLOTV, nLOTV,		&pCommon, nCommon,		nFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99		pOutSzTableDate,		pOutSzSeqId);*/	memcpy(pCDR1.CallDuration,"123",3);	memcpy(pCDR1.AccessPointNameNI,"TTTTTTTTTTTTTTTTTT123",3);	InsertSCDR(&pCDR1, 		&pChanageLoc, 1,//nChangeLoc,		&pLOTV, 1,//nLOTV,		&pCommon, 1,//nCommon,		0,//nFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99		pOutSzTableDate,		pOutSzSeqId);/*	memcpy(pCDR3.CallDuration,"123",3);	InsertMCDR(&pCDR3, 		&pChanageLoc, nChangeLoc,		&pLOTV, nLOTV,		&pCommon, nCommon,		nFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99		pOutSzTableDate,		pOutSzSeqId);	InsertMOCDR(&pCDR4, 		&pChanageLoc, nChangeLoc,		&pLOTV, nLOTV,		&pCommon, nCommon,		nFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99		pOutSzTableDate,		pOutSzSeqId);	memcpy(pCDR5.ServedIMEI,"123",3);	memcpy(pCDR5.ServedIMSI,"12321",5);	InsertMTCDR(&pCDR5, 		&pChanageLoc, nChangeLoc,		&pLOTV, nLOTV,		&pCommon, nCommon,		nFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99		pOutSzTableDate,		pOutSzSeqId);*/	InsertASNERROR("1222", 2, 		"2", 		1,		"1",		"222");	}}	void C_CDRWriteASNDecode::Test2(){	char Table[31];	char SeqId[21];	for(int i=0;i<10000;i++)	{		Insert("222", 3, "1", 0, 0xFFFFFFFF,  0xFFFFFFFF);//, NULLTable, SeqId);		//printf("%s %s\n",Table ,SeqId);	}}bool C_CDRWriteASNDecode::Insert(		const char* inSzContent, 		long inILength, 		const char* inSzGsnId, 		bool inBflagCancel, 		long inIPeerIp, 		long inIPeerSeqId,		char outSzTableName[31],		char outSzSeqId[21]){	//1.记录类型/*	m_In2.RecordType=0;	//2.内容编码	memset(m_szDest, 0, 4000);	int iBase64Len = base64_encode(m_szDest, inSzContent, inILength);	memcpy(&m_In2.Content, m_szDest, iBase64Len);	m_In2.ContentLength = iBase64Len;	//3.被操作的表名字	snprintf(m_In2.TableName, LEN_TABLENAME+1, "OTT");	//4.是否取消	m_In2.FlagCancel=inBflagCancel;	//5.网关编号	memcpy(m_In2.GsnId, inSzGsnId, strlen(inSzGsnId));	//6.peerip	m_In2.PeerIp = inIPeerIp;	//7.peerseq	m_In2.PeerSeqId = inIPeerSeqId;	int res = DbGTPInsert2(&m_In2, &m_Out);	if(res == 0 && outSzSeqId != NULL && outSzTableName != NULL)	{		snprintf(outSzSeqId, LEN_SEQ+1, "%s", m_Out.SeqId);		snprintf(outSzTableName, LEN_TABLENAME+1, "%s", m_Out.TableName);	}	return res == 0;	*/	return true;}

⌨️ 快捷键说明

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