📄 scdrfiltration.cpp
字号:
#ifdef EXT10os if ( 2 == pOSCdr->SystemType ) { writer.AddUserInteger("GMCC-SCDR.chChSelectionMode", pOSCdr->ChargingCharacterSelectionMode);//INT }#endif writer.AddUserBool("GMCC-SCDR.dynamicAddressFlag", pOSCdr->DynamicAddressFlag);//BOOL } writer.End(); printf("*********writer asn1 encode end*******\n"); return;}// SCdr话单过滤类的定义// 从配置文件中读取过滤规则C_SCdrFiltration::C_SCdrFiltration(CTempFileManager* pTFManager) : m_pTFManager(pTFManager){ strcpy(m_GgsnAddr, GGSN_ADDRESS); strcpy(m_SgsnAddr, SGSN_ADDRESS); // 过滤条件数据 m_FilterRecordType = 18; m_FilterNetworkInitiatedPDPContext = 100; m_FilterServedIMSI; m_FilterServedIMEI; m_FilterMSNetworkCapability; m_FilterRoutingAreaCode; m_FilterLocationAreaCode; m_FilterCellIdentity; m_FilterChargingID; m_FilterAccessPointNameNI; m_FilterPDPTypeNumber; m_FilterServedPDPAddress; m_FilterRecordOpenTime; m_FilterDiagnostics; m_FilterAPNSelectionMode; m_FilterAccessPointNameOI; m_FilterServedMSISDN; m_FilterChargingCharacteristics; m_FilterConsolidationResult; m_FilterChargingCharacterSelectionMode; m_FilterSCFAddress; m_FilterServiceKey; m_FilterDefaultTransacHandling; m_FilterCAMELAPNNI; m_FilterCAMELAPNOI; m_FilterNumberOfDPEncounter; m_FilterLevelOfCamelService; m_FilterFreeFormatData; m_FilterFFDAppendIndicator; m_FilterDefaultSMSHandling; m_FilterCAMELCallingPartyNumber; m_FilterCAMELAccessDestinationSubNumber; m_FilterCAMELSMSAdress; m_FilterSmsReferenceNumber; m_FilterDynamicAddressFlag; m_FilterAPNOperatorIdentifier; m_FilterAnonyAccessIndicator; m_FilterSystemType; m_FilterSGSNChange; m_FilterCauseForRecClosing; m_FilterRecordSequenceNumber; m_FilterNodeID; m_FilterLocalRecordSequeceNumnber; m_FilterUnsentDownlinkVolume; m_FilterRecordExtensions; m_vecBsFilterInfo.clear();}C_SCdrFiltration::~C_SCdrFiltration(){ m_vecBsFilterInfo.clear(); m_pTFManager = NULL;}// 从配置文件中读取过滤条件bool C_SCdrFiltration::GetFiltrationRuleFromConfigFile(){ CConfigXml configxml; if(!configxml.Load(FILE_NAME_OF_CONFIG)) { printf("error in configure file.\n"); return false; } bool bResult = false; sFilterInfo sInfo; string strTemp = ""; char cPath[LEN_OF_MSG_REF]; char cTemp[LEN_OF_MSG_REF]; VECBS vecBs; m_pTFManager->GetBsVec(SCDR, &vecBs); for (short i=0; i < vecBs.size(); i++) { memset(cPath, 0, sizeof(cPath)); if (vecBs.at(i) == SHORT_BS) { sprintf(cPath, "%s.%s", CONF_PATH, STRING_BS); } else if(vecBs.at(i) == SHORT_BS2) { sprintf(cPath, "%s.%s", CONF_PATH, STRING_BS2); } else { sprintf(cPath, "%s.%s", CONF_PATH, STRING_BS3); } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_NEED_CDR_HEADER); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_NeedCDRHeader = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_NeedCDRHeader = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILTER_BYUPDATAVOL); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByUpDataVol = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByUpDataVol = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_VALUE_DATAVOL_UP); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strlen(strTemp.c_str()) > 0) { sInfo.m_UpDataVolLimit = atoi(strTemp.c_str()); } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_FILTER_BYDOWNDATAVOL); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByDownDataVol = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByDownDataVol = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_VALUE_DATAVOL_DOWN); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strlen(strTemp.c_str()) != 0) { sInfo.m_DownDataVolLimit = atoi(strTemp.c_str()); } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_FILTER_BYDURATION); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByDuration = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByDuration = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_VALUE_DURATION); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strlen(strTemp.c_str()) != 0) { sInfo.m_DurationLimit = atoi(strTemp.c_str()); } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILTERBYGGSNADDR); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByGgsnAddr = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByGgsnAddr = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_VALUE_GGSNADDR); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strlen(strTemp.c_str()) != 0) { strcpy(sInfo.m_GgsnAddr, strTemp.c_str()); } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILTERBYSGSNADDR); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateBySgsnAddr = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateBySgsnAddr = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_VALUE_SGSNADDR); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strlen(strTemp.c_str()) != 0) { strcpy(sInfo.m_SgsnAddr, strTemp.c_str()); } // 过滤条件补充 // 过滤条件开关 strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_RECORDTYPE); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByRecordType = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByRecordType = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_NETWORKINITIATEDPDPCONTEXT); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByNetworkInitiatedPDPContext = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByNetworkInitiatedPDPContext = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_SERVEDIMSI); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByServedIMSI = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByServedIMSI = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_SERVEDIMEI); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByServedIMEI = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByServedIMEI = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_MSNETWORKCAPABILITY); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByMSNetworkCapability = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByMSNetworkCapability = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_ROUTINGAREACODE); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByRoutingAreaCode = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByRoutingAreaCode = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_LOCATIONAREACODE); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByLocationAreaCode = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByLocationAreaCode = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_CELLIDENTITY); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByCellIdentity = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByCellIdentity = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_CHARGINGID); bResult = configxml.GetValue(cTemp, strTemp); if (bResult && strcmp(strTemp.c_str(), "true") == 0) { sInfo.m_IsFiltrateByChargingID = true; } else if (bResult && strcmp(strTemp.c_str(), "false") == 0) { sInfo.m_IsFiltrateByChargingID = false; } strTemp = ""; memset(cTemp, 0, sizeof(cTemp)); sprintf(cTemp, "%s.%s", cPath, CONF_ISFILT_BY_ACCESSPOINTNAMENI);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -