?? ogcdr.cpp
字號(hào):
#include "oradb.h"void C_MYSQL::DbOGCDRTest(){ S_OGCDR pIn2; S_RESULT pOut2; memset(&pIn2,0,sizeof(pIn2)); pIn2.RecordType=2; pIn2.NetworkInitiatedPDPContext=2; memcpy(pIn2.ServedIMSI,"11111111111111111111111111111111",12); memcpy(pIn2.GGSNAddress,"11111111111111111111111111111111",12); memcpy(pIn2.ChargingID,"11111111111111111111111111111111",10); snprintf(pIn2.SGSNIPAddress, LEN_IpAddr+1, "255.255"); memcpy(pIn2.AccessPointNameNI,"11111111111111111111111111111111",12); memcpy(pIn2.PDPTypeNumber,"11111111111111111111111111111111",12); memcpy(pIn2.ServedPDPAddress,"11111111111111111111111111111111",12); pIn2.DynamicAddressFlag='A'; snprintf(pIn2.RecordOpenTime, LEN_DATETIME+1, "200682"); memcpy(pIn2.CallDuration,"11111111111111111111111111111111",12); memcpy(pIn2.CauseForRecClosing,"111",2); snprintf(pIn2.Diagnostics,LEN_Diagnostics+1, "123"); memcpy(pIn2.RecordSequenceNumber,"11111111111111111111111111111111",10); snprintf(pIn2.NodeID,LEN_NodeID+1, "AAA"); memcpy(pIn2.LocalRecordSequeceNumnber,"11111111111111111111111111111111",10); pIn2.APNSelectionMode=2; snprintf(pIn2.ServedMSISDN,LEN_ServedMSISDN+1, "123"); snprintf(pIn2.ChargingCharacteristics,LEN_ChargingCharacteristics+1, "123"); snprintf(pIn2.GtpName,LEN_TABLENAME + 1, "123"); snprintf(pIn2.GtpId,LEN_SEQ + 1, "123"); snprintf(pIn2.MergeName,LEN_TABLENAME + 1, "123"); snprintf(pIn2.MergeId,LEN_SEQ + 1, "123"); pIn2.FlagRepeat=2; pIn2.FlagR499=2; snprintf(pIn2.GsnId,LEN_GSNID+1, "123"); snprintf(pIn2.TableName,LEN_TABLENAME + 1, "OGCDR"); pIn2.FlagRead=2; snprintf(pIn2.Diagnostics,2,"12"); pIn2.ChargingCharacterSelectionMode=2; snprintf(pIn2.SgsnPlmnIdentifier,LEN_SgsnPlmnIdentifier+1, "123"); pIn2.AnonyAccessIndicator=2; memcpy(pIn2.RemotePdpAddr,"11111111111111111111111111111111",10); DbOGCDRInsert(&pIn2, &pOut2); }int C_MYSQL::DbOGCDRInsert(struct S_OGCDR* p, struct S_RESULT* pOut){ char szMsg[512]; char* TableName = p->TableName; char* SeqId = p->SeqId; char *GtpName=(char *)p->GtpName; char *GtpId=(char *)p->GtpId; int FlagRead = p->FlagRead; /*1*/ int FlagRepeat = p->FlagRepeat; int FlagR499 = p->FlagR499; int NetworkInitiatedPDPContext = p->NetworkInitiatedPDPContext; /*2*/ char *ServedIMSI = p->ServedIMSI; char *ServedMSISDN = p->ServedMSISDN; char *SGSNIPAddress = p->SGSNIPAddress; /*3*/ char* ChargingID = p->ChargingID; char *GGSNAddress = p->GGSNAddress; char *AccessPointNameNI = p->AccessPointNameNI; /*4*/ int APNSelectionMode = p->APNSelectionMode; char *PDPTypeNumber = p->PDPTypeNumber; char *ServedPDPAddress = p->ServedPDPAddress; char *RecordOpenTime = p->RecordOpenTime; char *CallDuration = p->CallDuration; /*5*/ char* CauseForRecClosing = p->CauseForRecClosing; char *Diagnostics = p->Diagnostics; char* RecordSequenceNumber = p->RecordSequenceNumber; char *NodeID = p->NodeID; char* LocalRecordSequeceNumnber = p->LocalRecordSequeceNumnber; /*6*/ char* ChargingCharacteristics = p->ChargingCharacteristics; int DynamicAddressFlag = p->DynamicAddressFlag; /*int ConsolidationResult = p->ConsolidationResult; int ChargingCharacterSelectionMode = p->ChargingCharacterSelectionMode;*/ /* stamp */ char *DateCreated = p->DateCreated; /*10*/ char *GsnId = p->GsnId;/* char *RecordExtensions = p->RecordExtensions;*/#ifdef EXT10og int ChargingCharacterSelectionMode = p->ChargingCharacterSelectionMode; char *SgsnPlmnIdentifier = p->SgsnPlmnIdentifier; /* both for R4 & R99*/ int AnonyAccessIndicator = p->AnonyAccessIndicator; /* only for R4 */ char *RemotePdpAddr = p->RemotePdpAddr; /* only for R4 */#endif char szSQL[SQLMAX]; char szSeqId[LEN_SEQ+1]; memset(szSQL,0,SQLMAX); memset(szSeqId,0,LEN_SEQ+1); snprintf(szSQL, SQLMAX, "INSERT INTO %s (""FLAGREPEAT," "FLAGR499," "NETWORKINITIATEDPDPCONTEXT,""SERVEDIMSI," "SERVEDMSISDN," "SGSNIPADDRESS," "CHARGINGID," "GGSNADDRESS," "ACCESSPOINTNAMENI,""APNSELECTIONMODE," "PDPTYPENUMBER," "SERVEDPDPADDRESS," "RECORDOPENTIME,""CAUSEFORRECCLOSING," "DIAGNOSITICS," "RECORDSEQUENCENUMBER," "NODEID," "LOCALRECORDSEQUECENUMBER,""CHARGINGCHARACTERISTICS," "DYNAMICADDRESSFLAG," "DATECREATED,""CALLDURATION,""GTPID,GTPLTABLE,""GSNID,FLAGREAD"#ifdef EXT10og",CHARGINGCHARACTERSELECTIONMODE"",SGSNPLMNIDENTIFIER"",ANONYMOUSACCESSINDICATOR"",REMOTEPDPADDRESS"#endif ") VALUES(" "%d,%d,%d," "'%s','%s','%s'," "%s,'%s','%s'," "%d,'%s','%s','%s'," "%s,%s,%s,'%s',%s," "'%s',%d," "NOW()," "%s," "%s,'%s'," "%s,%d" #ifdef EXT10og ",%d" ",'%s'" ",%d" ",'%s'" #endif ")", TableName, FlagRepeat, FlagR499, NetworkInitiatedPDPContext, ServedIMSI, ServedMSISDN, SGSNIPAddress, ChargingID[0]==0?"NULL":ChargingID, GGSNAddress, AccessPointNameNI, APNSelectionMode, PDPTypeNumber, ServedPDPAddress, RecordOpenTime, CauseForRecClosing[0]==0?"NULL":CauseForRecClosing, Diagnostics[0]==0?"NULL":Diagnostics, RecordSequenceNumber[0]==0?"NULL":RecordSequenceNumber, NodeID, LocalRecordSequeceNumnber[0]==0?"NULL":LocalRecordSequeceNumnber, ChargingCharacteristics, DynamicAddressFlag, CallDuration[0]==0?"NULL":CallDuration, GtpId[0]==0?"NULL":GtpId,GtpName, GsnId[0]==0?"NULL":GsnId,FlagRead#ifdef EXT10og ,ChargingCharacterSelectionMode ,SgsnPlmnIdentifier ,AnonyAccessIndicator ,RemotePdpAddr#endif ); #ifdef _DEBUG logOra(sErrLog, szSQL);#endif Lock(); int res = mysql_real_query(myConnect, szSQL, strlen(szSQL)); if(res != 0) { Unlock(); onError(); return -1; } if(GetSeq(p->SeqId) != 0) { Unlock(); onError(); return -2; } Unlock(); return 0;}int C_MYSQL::DbOGCDRSelect(char* pInSzTableName, char* pWhere, struct S_OGCDR** pOutCDR, int *number, struct S_RESULT* pOut){ char szMsg[512]; char SeqId[LEN_SEQ + 1]; char GtpName[LEN_TABLENAME + 1]; char GtpId[LEN_SEQ + 1]; int FlagRead; int FlagRepeat; int FlagR499; int NetworkInitiatedPDPContext; char ServedIMSI[17]; char ServedMSISDN[LEN_ServedMSISDN+1]; char SGSNIPAddress[46]; char CellIdentity[25]; char ChargingID[13]; char GGSNAddress[46]; char AccessPointNameNI[64]; int APNSelectionMode; char PDPTypeNumber[9]; char ServedPDPAddress[46]; char RecordOpenTime[LEN_DATETIME + 1]; char CallDuration[13];/* int SGSNChange;*/ char CauseForRecClosing[3]; char Diagnostics[LEN_Diagnostics+1]; char RecordSequenceNumber[11]; char NodeID[21]; char LocalRecordSequeceNumnber[11]; char ChargingCharacteristics[LEN_ChargingCharacteristics+1]; int DynamicAddressFlag; int ConsolidationResult; char DateCreated[LEN_DATETIME + 1]; char GsnId[11];/* char RecordExtensions[LEN_RecordExtensions+1];*/ int ChargingCharacterSelectionMode; char SgsnPlmnIdentifier[LEN_SgsnPlmnIdentifier+1]; /* both for R4 & R99*/ int AnonyAccessIndicator; /* only for R4 */ char RemotePdpAddr[45+1]; /* only for R4 */ struct S_OGCDR *pLCLOC = *pOutCDR; int nNumber = 0; char szSQL[SQLMAX]; char szSQL2[SQLMAX]; char szSQL3[SQLMAX]; struct S_OGCDR* p2; int j; char * sz ; short id[40]; *number = 0; if(pLCLOC != NULL) { return -1; } snprintf(szSQL2, SQLMAX, "SELECT COUNT(*) FROM %s WHERE %s", pInSzTableName, pWhere); snprintf(szSQL, SQLMAX, "SELECT ""SEQID,""FLAGREAD,""GTPID,""GTPLTABLE,""MERGEID,""MERGETABLE,""FLAGREPEAT,""FLAGR499,""NETWORKINITIATEDPDPCONTEXT,""SERVEDIMSI,""GGSNADDRESS,""CHARGINGID,""SGSNIPADDRESS,""ACCESSPOINTNAMENI,""PDPTYPENUMBER,""SERVEDPDPADDRESS,""DYNAMICADDRESSFLAG,""RECORDOPENTIME,""CALLDURATION,""CAUSEFORRECCLOSING,""DIAGNOSITICS,""RECORDSEQUENCENUMBER,""NODEID,""RECORDEXTENSIONS,""LOCALRECORDSEQUECENUMBER,""APNSELECTIONMODE,""SERVEDMSISDN,""CHARGINGCHARACTERISTICS,""SGSNPLMNIDENTIFIER,""CHARGINGCHARACTERSELECTIONMODE,""ANONYMOUSACCESSINDICATOR,""REMOTEPDPADDRESS,""GSNID,"//"DATECREATED""DATE_FORMAT(DATECREATED,'%%Y%%m%%d%%H%%i%%s')" " FROM %s WHERE %s", pInSzTableName, pWhere);#ifdef _DEBUG#ifdef LOG_SELECT logOra(sErrLog, szSQL);#endif#endif Lock(); nNumber=DbCount(szSQL2,myConnect); if(nNumber <= 0) { Unlock(); * number = 0; return 0; } sz = (char *)malloc(SIZE_S_OGCDR*nNumber); memset(sz, 0, SIZE_S_OGCDR*nNumber); mysql_real_query(myConnect, szSQL, strlen(szSQL)); MYSQL_RES *res_ptr = mysql_store_result(myConnect); if (res_ptr == NULL) { onError(); return -1; } MYSQL_ROW sqlrow;#ifdef _DEBUG logOra(sErrLog, "CURSOR...");#endif for(j=0;j<nNumber;j++) { sqlrow = mysql_fetch_row(res_ptr); p2 = (struct S_OGCDR*)&sz[SIZE_S_OGCDR*j]; if (sqlrow[6] != NULL) p2->FlagRepeat=atoi(sqlrow[6]); if (sqlrow[7] != NULL) p2->FlagR499=atoi(sqlrow[7]); if (sqlrow[8] != NULL) p2->NetworkInitiatedPDPContext=atoi(sqlrow[8]); if (sqlrow[9] != NULL) memcpy(p2->ServedIMSI,sqlrow[9],16); if (sqlrow[26] != NULL) memcpy(p2->ServedMSISDN,sqlrow[26],LEN_ServedMSISDN); if (sqlrow[12] != NULL) memcpy(p2->SGSNIPAddress,sqlrow[12],45); if (sqlrow[11] != NULL) memcpy(p2->ChargingID,sqlrow[11],sizeof(p2->ChargingID)); if (sqlrow[10] != NULL) memcpy(p2->GGSNAddress,sqlrow[10],45); if (sqlrow[13] != NULL) memcpy(p2->AccessPointNameNI,sqlrow[13],63); if (sqlrow[25] != NULL) p2->APNSelectionMode=atoi(sqlrow[25]); if (sqlrow[14] != NULL) memcpy(p2->PDPTypeNumber,sqlrow[14],8); if (sqlrow[15] != NULL) memcpy(p2->ServedPDPAddress,sqlrow[15],45); if (sqlrow[17] != NULL) memcpy(p2->RecordOpenTime,sqlrow[17],LEN_DATETIME); if (sqlrow[18] != NULL) memcpy(p2->CallDuration,sqlrow[18],13); if (sqlrow[19] != NULL) memcpy(p2->CauseForRecClosing,sqlrow[19],3); if (sqlrow[20] != NULL) memcpy(p2->Diagnostics,sqlrow[20],LEN_Diagnostics); if (sqlrow[21] != NULL) memcpy(p2->RecordSequenceNumber,sqlrow[21],11); if (sqlrow[22] != NULL) memcpy(p2->NodeID,sqlrow[22],20); if (sqlrow[24] != NULL) memcpy(p2->LocalRecordSequeceNumnber,sqlrow[24],11); if (sqlrow[27] != NULL) memcpy(p2->ChargingCharacteristics,sqlrow[27],LEN_ChargingCharacteristics); if (sqlrow[16] != NULL) p2->DynamicAddressFlag=atoi(sqlrow[16]); if (sqlrow[33] != NULL) memcpy(p2->DateCreated,sqlrow[33],LEN_DATETIME); if (sqlrow[32] != NULL) memcpy(p2->GsnId,sqlrow[32],10); if (sqlrow[0] != NULL) memcpy(p2->SeqId,sqlrow[0],10); if (sqlrow[2] != NULL) memcpy(p2->GtpId,sqlrow[2],LEN_SEQ); if (sqlrow[3] != NULL) memcpy(p2->GtpName,sqlrow[3],LEN_TABLENAME); if (sqlrow[1] != NULL) p2->FlagRead=atoi(sqlrow[1]);if (sqlrow[29] != NULL) p2->ChargingCharacterSelectionMode=atoi(sqlrow[29]);if (sqlrow[28] != NULL) memcpy(p2->SgsnPlmnIdentifier,sqlrow[28],LEN_SgsnPlmnIdentifier);if (sqlrow[30] != NULL) p2->AnonyAccessIndicator = atoi(sqlrow[30]);if (sqlrow[31] != NULL) memcpy(p2->RemotePdpAddr, sqlrow[31], 45); if (pInSzTableName != NULL) memcpy(p2->TableName, pInSzTableName, LEN_TABLENAME); snprintf(szSQL3, SQLMAX, "UPDATE %s SET FLAGREAD=1 WHERE SEQID='%s'", p2->TableName, p2->SeqId); mysql_real_query(myConnect, szSQL3, strlen(szSQL3)); } * pOutCDR = (struct S_OGCDR*)sz; * number = nNumber; mysql_free_result(res_ptr); if (mysql_errno(myConnect)) { Unlock(); onError(); return -1; } Unlock(); return 0;}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -