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

📄 cdrwritegtp.cpp

📁 Mysql的处理
💻 CPP
字号:
/*********************************************************************** * Module:  CExceptionADO.h * Author:  asus * Modified: 2006年4月27日 10:35:46 * Purpose: Declaration of the class CExceptionADO * Comment: 原始GTP'包的接口类 ***********************************************************************/#include "CDRWriteGTP.h"#include<stdio.h>#include <string.h>#include "Base64.h"#include "Date1.h"C_CDRWriteGTP::C_CDRWriteGTP(){}C_CDRWriteGTP::~C_CDRWriteGTP(){}bool C_CDRWriteGTP::Insert(		const char* inSzContent, 		long inILength, 		const char* inSzGsnId, 		long inBflagCancel, 		long inIPeerIp, 		long inIPeerSeqId,		char outSzTableName[31],		char outSzSeqId[21]){	//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.ContentLength = iBase64Len;	//3.被操作的表名字	snprintf(m_In.TableName, LEN_TABLENAME+1, "OGTPL%s", GetSysdate());	//4.是否取消	m_In.FlagCancel=inBflagCancel;	//5.网关编号	memcpy(m_In.GsnId, inSzGsnId, strlen(inSzGsnId));	//6.peerip	m_In.PeerIp = inIPeerIp;	//7.peerseq	m_In.PeerSeqId = inIPeerSeqId;	m_In.CgType = 0;	memset(&m_Out, 0, sizeof(m_Out));	int res = DbGTPInsert(&m_In, &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);	}	if(res != 0)		return false;	return 	Commit();}bool C_CDRWriteGTP::Insert2(const char* inSzContent, 				long inILength, 				long inINumberOfCdrs, 				long inBflagCancel, 				long inIPeerIp, 				long inIPeerSeqId,				short inICgType,				short inIRecordType,				char outSzTableName[31], char outSzSeqId[21]){	//1.记录类型	m_In.RecordType=inIRecordType;	//2.内容编码	if(inIRecordType == 0)	{		memset(m_szDest, 0, 4000);		int iBase64Len = base64_encode(m_szDest, inSzContent, inILength);		memcpy(&m_In.Content, m_szDest, iBase64Len);		m_In.ContentLength = iBase64Len;	}	else	{		snprintf(m_In.Content, LEN_CONTENT, "%s", inSzContent);		m_In.ContentLength = strlen(inSzContent);	}	//3.被操作的表名字	snprintf(m_In.TableName, LEN_TABLENAME+1, "OGTPL%s", GetSysdate());	//4.是否取消	m_In.FlagCancel=inBflagCancel;	//5.网关编号	snprintf(m_In.GsnId, 11, "%u", inINumberOfCdrs);	//6.peerip	m_In.PeerIp = inIPeerIp;	//7.peerseq	m_In.PeerSeqId = inIPeerSeqId;	m_In.CgType = inICgType;	memset(&m_Out, 0, sizeof(m_Out));	int res = DbGTPInsert(&m_In, &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);	}	if(res != 0)		return false;	return 	Commit();}bool C_CDRWriteGTP::Update(long inIPeerIp, long inIPeerSeqId, long inBflagCancel,		int &RecordType, char outFileName[4000], int &outLength,		char outSzTableName[31], char outSzSeqId[21]){	char szTableName[LEN_TABLENAME];		//	printf("C_CDRWriteGTP::Update\n");			char szTableDate[20];//	char szTableDate2[20];	char cur[20];	snprintf(cur,20, "%s", GetSysdate());//	printf("cur=%s\n", cur);	snprintf(szTableDate, 20, "%s", m_nClock.Get(cur, strlen(cur),false, 4, 0));		CDate1 date(szTableDate, cur);//szTableDate2);	date.Calculate();	int all = date.GetCount();	int i;	int res2;//	printf("szTableDate=%d\n", all);	for(i=all-1;i>=0;i--)	{		snprintf(outSzTableName, LEN_TABLENAME, "OGTPL%s", date.GetAt(i).c_str());	//	snprintf(outSzTableName, LEN_TABLENAME, "OGTPL%s", cur);//date.GetAt(i).c_str());		printf("%s\n", outSzTableName);				printf("%u\n", inIPeerIp);				printf("%u\n", inIPeerSeqId);				if((res2 = DbGTPSelect2(inIPeerIp, inIPeerSeqId,			outSzTableName, 			&RecordType, 			m_szDest2,			outSzSeqId)) == 3)//error		{			return false;		}		if(res2 == 2)//no data	//		return false;			continue;		if(strlen(outSzSeqId) <= 0 || strlen(outSzTableName) <= 0)			return false;				char szSQL[1024];		snprintf(szSQL, 1024, "UPDATE %s SET FLAGCANCEL=%d "			"WHERE SEQID='%s'", outSzTableName,			inBflagCancel, outSzSeqId);				int res = DbUpdateTable(szSQL, &m_Out);				if(res != 0)			return false;				if(RecordType == 0)		{			int nLengthDb = strlen(m_szDest2);			outLength = base64_decode(outFileName, m_szDest2, nLengthDb);						return true;		}		else		{			outLength = strlen(m_szDest2);			memcpy(outFileName, m_szDest2, outLength);			outFileName[outLength] = 0;						return true;		}	}		return 	Commit();}	void C_CDRWriteGTP::Test(){	S_GTPL pIn;	S_RESULT pOut;	memset(&pIn,0,sizeof(pIn));		pIn.CgType=10;	memcpy(pIn.Content,"11111111111111111111111111111111111111", 12);	snprintf(pIn.TableName, LEN_TABLENAME+1, "OGTPL");	pIn.RecordType=100;	pIn.ContentLength=20;	pIn.FlagCancel=1;	pIn.PeerIp=0xffffffff;	pIn.PeerSeqId=88333333;    memcpy(pIn.GsnId,"11111111111111111111111111111111111111", 12);    memcpy(pIn.GsnId,"3333333", 12);	char outSzTableName[31];	char outSzSeqId[21];		Insert2("1231242342314213",//const char* inSzContent, 				12,//long inILength, 				1,//long inINumberOfCdrs, 				1,//long inBflagCancel, 				0xff00ff00,//long inIPeerIp, 				0xffff,//long inIPeerSeqId,				1,//short inICgType,				2,//short inIRecordType,				outSzTableName, outSzSeqId);	/*	long inIPeerIp(3232235533);	long inIPeerSeqId(1);	long inBflagCancel(2);	int RecordType;	char outFileName[4000];	int outLength;	char outSzTableName[31];	char outSzSeqId[21];	if(Update(inIPeerIp, inIPeerSeqId, inBflagCancel,		RecordType, outFileName, outLength,		outSzTableName, outSzSeqId))	{		FILE* fp = fopen("ogtpl.bin", "wb");		fwrite(outFileName, 1, outLength, fp);		fclose(fp);		printf("RecordType=%d\n", RecordType);		printf("outSzTableName=%s\n", outSzTableName);		printf("outSzSeqId=%s\n", outSzSeqId);	}	else	{		printf("error");	}/*	char Table[31];	char SeqId[21];	for(int i=0;i<1;i++)//0000;i++)	{//		Insert("12345678901234567890123456789012345678901234567890", 50, "1", 0, 0xFFFFFFFF,  0xFFFFFFFF, Table, SeqId);		Insert2(			"12345678901234567890123456789012345678901234567890", 			50, 			100,//cdrs 			0, 			0xFFFFFFFF,  			0xFFFFFFFF, 			3,			1,			Table, 			SeqId);//		printf("GTP Table Name=%s SeqId=%s\n",Table ,SeqId);	}//	exit(0);*/}bool C_CDRWriteGTP::Update(const char* pInSzSQL){	return DbUpdateTable((char*)pInSzSQL, &m_Out) == 0;}bool C_CDRWriteGTP::ReadRecord(char* pInSzTableName, char* pInSeqId, 	char szOutContent[4000], int &nLength, 	int &RecordType, 	char szOutSeqId[21], char szOutIpAdd[16], int &nFalgCancel){	char szOutFromDb[4000];	int nLengthDb;	memset(szOutFromDb,0,4000);	memset(szOutIpAdd, 0, 16);	int nPeerIp;	int res = DbGTPSelect(pInSzTableName, pInSeqId, 		&RecordType, szOutFromDb, szOutSeqId,		&nPeerIp, &nFalgCancel);	if(res == 0)	{		nLengthDb = strlen(szOutFromDb);		nLength = base64_decode(szOutContent, szOutFromDb, nLengthDb); 		//对方的IP地址		printf("u=%u u2=%u d=%d cancel=%d\n", (unsigned int)nPeerIp, nPeerIp, nPeerIp,			nFalgCancel);		memcpy(&szOutIpAdd[12], (unsigned int*)&nPeerIp, 4);		return true;	}	return false;}bool C_CDRWriteGTP::GetCount(long inIPeerIp, long inIPeerSeqId, long& outICount){	outICount = 0;	char szTableName[LEN_TABLENAME];	char szTableDate[20];	char szTableDate2[20];	char cur[20];	snprintf(cur,20, "%s", GetSysdate());	snprintf(szTableDate, 20, "%s", m_nClock.Get(cur, strlen(cur),false, 2, 0));	snprintf(szTableDate2, 20, "%s", m_nClock.Get(cur, strlen(cur),true, 2, 0));		CDate1 date(szTableDate, szTableDate2);	date.Calculate();	int all = date.GetCount();	int i;	for(i=0;i<all;i++)	{		snprintf(szTableName, LEN_TABLENAME, "OGTPL%s", date.GetAt(i).c_str());		long nOutCount = 0;		if(DbGTPCount(szTableName, inIPeerIp, inIPeerSeqId, &nOutCount) == 0)		{			outICount += nOutCount;		}		else		{			return false;		}	}	return true;}	bool C_CDRWriteGTP::TimeLimit(	//in	const char *p_timeStart,    int   p_timeAcceptedFree,	//out    int  &p_bIsFree,    char p_timeErrorStart[15],    char p_timeErrorEnd[15],    int  &p_nResult){	return DbReadOgtplTableCount(		(char*)p_timeStart,		p_timeAcceptedFree,		&p_bIsFree,		p_timeErrorStart,		p_timeErrorEnd,		&p_nResult) == 0;}

⌨️ 快捷键说明

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