📄 cnapstag.cpp
字号:
/***文件头描述**/#include <string.h>#include "cnapstag.hpp"#include "mmlpubdef.hpp"#include "BepsSend.h"#include "libcore.h"#include "SvrDef.hpp"/****************************************************************************函数说明:TParameter的构造函数*输入参数:无* *输出参数:无* * *返回值 :无* *作 者:zhanglongping *日 期: 2006-10-15****************************************************************************/TParameter::TParameter(){ paraValueLen = 0; paraValue = NULL; paraName = NULL;}/****************************************************************************函数说明:TParameter的析构函数*输入参数:无* *输出参数:无* * *返回值 :无* *作 者:zhanglongping *日 期: 2006-10-15****************************************************************************/TParameter::~TParameter(){ if(NULL != paraName) { delete [] paraName; paraName = NULL; } if(NULL != paraValue) { delete [] paraValue; paraValue = NULL; } paraValueLen = 0;}/****************************************************************************函数说明:TParameter的打印函数,打印其成员值*输入参数:无* *输出参数:无* * *返回值 :TBool* TRUE 处理成功* FALSE 处理失败*作 者:zhanglongping *日 期: 2006-10-15****************************************************************************/BOOL TParameter::printParaInfo(){ //PrintFormat(PROMPT, "Enter TParameter::printParaInfo\n"); if( NULL == paraName || NULL == paraValue) { filelog(CIS_SRV_LOG, "Error:parameter information invalid in file=[%s]" "at line=[%d]\n", __FILE__, __LINE__); return FALSE; } if( paraValueLen > MAX_LEN_PARA_VALUE || paraValueLen <=0) { filelog(CIS_SRV_LOG, "Error:parameter length invalid in file=[%s]" "at line=[%d]\n", __FILE__, __LINE__); return FALSE; } filelog(CIS_SRV_LOG, "ParaName=[%s],ParaValue=[%d][%s]\n", paraName, paraValueLen, paraValue); //PrintFormat(PROMPT, "Exit TParameter::printParaInfo"); return TRUE;}/****************************************************************************函数说明:TCnapsTagMML的构造函数*输入参数:无* *输出参数:无* * *返回值 :无* *作 者:zhanglongping *日 期: 2006-10-15****************************************************************************/TCnapsTagMML::TCnapsTagMML(){ mmlHeadLen = 0; mmlServiceHeadLen = 0; mmlContentLen = 0; mmlTailLen = 0; mmlHead = NULL; mmlServiceHead = NULL; mmlContent = NULL; mmlTail = NULL; mmlInfoLen = 0; mmlInfo = NULL; mmlHeadParaNum = 0; mmlServiceHeadParaNum = 0; mmlContentParaNum = 0; mmlTailParaNum = 0; memset(mmlHeadParaList, 0, sizeof(mmlHeadParaList)); memset(mmlServiceHeadParaList, 0, sizeof(mmlServiceHeadParaList)); memset(mmlContentParaList, 0, sizeof(mmlContentParaList)); memset(mmlTailParaList, 0, sizeof(mmlTailParaList));}/****************************************************************************函数说明:TCnapsTagMML的析构函数*输入参数:无* *输出参数:无* * *返回值 :无* *作 者:zhanglongping *日 期: 2006-10-15****************************************************************************/TCnapsTagMML::~TCnapsTagMML(){#if 0 if(NULL != mmlInfo) { delete [] mmlInfo; }#endif if(NULL != mmlHead) { delete [] mmlHead; } if(NULL != mmlServiceHead) { delete [] mmlServiceHead; } if(NULL != mmlContent) { delete [] mmlContent; } if(NULL != mmlTail) { delete [] mmlTail; }}/****************************************************************************函数说明:TCnapsTagMML的打印函数,打印其成员值*输入参数:无* *输出参数:无* * *返回值 :TBool* TRUE 处理成功* FALSE 处理失败*作 者:zhanglongping *日 期: 2006-10-15****************************************************************************/BOOL TCnapsTagMML::printMmlcmd(){ filelog(CIS_SRV_LOG, "Enter TCnapsTagMML::printMmlcmd\n"); if(NULL == mmlInfo || mmlInfoLen <= 0 || mmlInfoLen > MAX_LEN_MML_INFO) { filelog(CIS_SRV_LOG, "Error:mmlInfo or mmlInfoLen=[%d] invalid in " "file=[%s] at line=[%d]\n", mmlInfoLen, __FILE__, __LINE__); return FALSE; } if(NULL == mmlContent || mmlContentLen <= 0 || mmlContentLen > MAX_LEN_MML_INFO) { filelog(CIS_SRV_LOG, "Error:mmlContent or mmlContentLen=[%d] invalid " "in file=[%s] at line=[%d]\n", mmlContentLen, __FILE__, __LINE__); return FALSE; } filelog(CIS_SRV_LOG, "The MML information as follow\n"); filelog(CIS_SRV_LOG, "mmlInfo=[%d][%s]\n", mmlInfoLen,mmlInfo); filelog(CIS_SRV_LOG, "mmlHeadParaNum=[%d], mmlServiceHeadParaNum=[%d]\n", mmlHeadParaNum, mmlServiceHeadParaNum); filelog(CIS_SRV_LOG, "mmlContentParaNum=[%d], mmlTailParaNum=[%d]\n", mmlContentParaNum, mmlTailParaNum); if(NULL != mmlHead && mmlHeadLen > 0) { filelog(CIS_SRV_LOG, "mmlHead=[%d][%s]\n", mmlHeadLen, mmlHead); for(int i=0; i<mmlHeadParaNum; i++) { mmlHeadParaList[i].printParaInfo(); } } if(NULL!= mmlServiceHead && mmlServiceHeadLen > 0) { filelog(CIS_SRV_LOG, "mmlServiceHead=[%d][%s]\n", mmlServiceHeadLen, mmlServiceHead); for(int i=0; i<mmlServiceHeadParaNum; i++) { mmlServiceHeadParaList[i].printParaInfo(); } } if(NULL != mmlContent && mmlContentLen >0) { filelog(CIS_SRV_LOG, "mmlContent=[%d][%s]\n", mmlContentLen, mmlContent); for(int i=0; i<mmlContentParaNum; i++) { mmlContentParaList[i].printParaInfo(); } } if(NULL != mmlTail && mmlTailLen > 0) { filelog(CIS_SRV_LOG, "mmlTail=[%d][%s]\n", mmlTailLen, mmlTail); for(int i=0; i<mmlTailParaNum; i++) { mmlTailParaList[i].printParaInfo(); } } filelog(CIS_SRV_LOG, "Exit TCnapsTagMML::printMmlcmd\n"); return TRUE;}/****************************************************************************函数说明:TCnapsTagMML的分析函数,根据其人机接口信息分析出报文头,报文业务头*报文体,报文尾*输入参数:无* *输出参数:无* * *返回值 :TBool* TRUE 处理成功* FALSE 处理失败*作 者:zhanglongping *日 期: 2006-10-15****************************************************************************/BOOL TCnapsTagMML::parserMmlcmd(){ printf("Enter TCnapsTagMML::parserMmlcmd\n"); //filelog(CIS_SRV_LOG, "Enter TCnapsTagMML::parserMmlcmd"); //printf("Enter TCnapsTagMML::parserMmlcmd 1\n"); if(NULL == mmlInfo || mmlInfoLen <= 0 || mmlInfoLen > MAX_LEN_MML_INFO) { filelog(CIS_SRV_LOG, "Error:mmlInfo or mmlInfoLen=[%d] invalid in " "file=[%s] at line=[%d]", mmlInfoLen, __FILE__, __LINE__); return FALSE; } //PrintFormat(PROMPT, "mmlInfo=[%d][%s]\n", strlen(mmlInfo), mmlInfo); char *sFindStr = NULL; char *sFinsh = NULL; long iContentLen = 0; BOOL bRet = TRUE; char *mmlInfoHead = mmlInfo; //分析出报文头 printf("Enter TCnapsTagMML::parserMmlcmd MML_HEAD\n"); if((sFindStr = strstr(mmlInfo, MML_HEAD)) != NULL) { printf("strstr(mmlInfo, MML_HEAD)"); filelog(CIS_SRV_LOG, "Parser message head\n "); //PrintFormat(PROMPT, "mmlInfo=[%d][%s]\n", strlen(mmlInfo), mmlInfo); if((sFinsh = strstr(mmlInfo, FLAG_FINSH)) != NULL) { printf("strstr(mmlInfo, FLAG_FINSH) "); //去掉报文类别标识及结束标志 sFindStr += MAX_LEN_TAG; //add 2 mod by lics sFinsh -= 1; iContentLen = sFinsh - sFindStr; if(iContentLen <= 0 || iContentLen > MAX_LEN_MML_HEAD) { printf("iContentLen <= 0 || iContentLen > MAX_LEN_MML_HEAD "); filelog(CIS_SRV_LOG, "Error:mmlHeadLen=[%d] invalid in file=" "[%s] at line=[%d]\n", iContentLen, __FILE__, __LINE__); return FALSE; } mmlHeadLen = iContentLen; mmlHead = new char[mmlHeadLen+2]; if(NULL == mmlHead) { printf("NULL == mmlHead "); filelog(CIS_SRV_LOG, "Error:allocate memory fail in file=[%s]" "at line=[%d]\n", __FILE__, __LINE__); return FALSE; } memset(mmlHead, 0, mmlHeadLen+2); memcpy(mmlHead, sFindStr, mmlHeadLen); strcat(mmlHead, FLAG_COLON); printf("报文头mmlHead:%s", mmlHead); iContentLen = 0; sFindStr = NULL; mmlInfo = sFinsh+2; sFinsh = NULL; bRet = parserContent(mmlHead, mmlHeadParaList, &mmlHeadParaNum); if(FALSE == bRet) { return bRet; } } else { filelog(CIS_SRV_LOG, "Error:mmlInfo=[%s] not mml head finsh flag " "in file=[%s] at line=[%d]\n", mmlInfo, __FILE__, __LINE__); return FALSE; } } //分析出报文中的业务头 printf("Enter TCnapsTagMML::parserMmlcmd MML_SRV_HEAD\n"); /*if((sFindStr = strstr(mmlInfo, MML_SRV_HEAD)) != NULL) { filelog(CIS_SRV_LOG, "Parser message service head\n"); //PrintFormat(PROMPT, "mmlInfo=[%d][%s]\n", strlen(mmlInfo), mmlInfo); if((sFinsh = strstr(mmlInfo, FLAG_FINSH)) != NULL) { //去掉报文类别标识及结束标志 sFindStr += MAX_LEN_FLAG_MSG; sFinsh -= 1; iContentLen = sFinsh - sFindStr; if(iContentLen <= 0 || iContentLen > MAX_LEN_MML_HEAD) { filelog(CIS_SRV_LOG, "Error:mmlServiceHeadLen=[%d] invalid in " "file=[%s] at line=[%d]\n", iContentLen, __FILE__, __LINE__); return FALSE; } mmlServiceHeadLen = iContentLen; mmlServiceHead = new char[mmlServiceHeadLen+2]; if(NULL == mmlServiceHead) { filelog(CIS_SRV_LOG, "Error:allocate memory fail in file=[%s]" "at line=[%d]\n", __FILE__, __LINE__); return FALSE; } memset(mmlServiceHead, 0, mmlServiceHeadLen+2); memcpy(mmlServiceHead, sFindStr, mmlServiceHeadLen); strcat(mmlServiceHead, FLAG_COLON); //printf("mmlServiceHead:%s\n", mmlServiceHead); iContentLen = 0; sFindStr = NULL; mmlInfo = sFinsh+2; sFinsh = NULL; bRet = parserContent(mmlServiceHead, mmlServiceHeadParaList, &mmlServiceHeadParaNum); if(FALSE == bRet) { return bRet; } } else { filelog(CIS_SRV_LOG, "Error:mmlInfo not mml service head " "finsh: flag in file=[%s] at line=[%d]\n", __FILE__, __LINE__); return FALSE; } }*/ //分析出报文体 if((sFindStr = strstr(mmlInfo, MML_CONTENT)) != NULL) { //filelog(CIS_SRV_LOG, "Parser message content\n"); //PrintFormat(PROMPT, "mmlInfo=[%d][%s]\n", strlen(mmlInfo), mmlInfo); if((sFinsh = strstr(mmlInfo, FLAG_FINSH)) != NULL) { //去掉报文类别标识及结束标志 sFindStr += MAX_LEN_TAG; sFinsh -= 1; iContentLen = sFinsh - sFindStr; if(iContentLen <= 0 || iContentLen > MAX_LEN_MML_CONT) { filelog(CIS_SRV_LOG, "Error:mmlContentLen=[%d] invalid in file" "=[%s] at line=[%d]\n", iContentLen, __FILE__, __LINE__); } mmlContentLen = iContentLen; mmlContent = new char[mmlContentLen+2]; if(NULL == mmlContent) { filelog(CIS_SRV_LOG, "Error:allocate memory fail in file=[%s]" "at line=[%d]\n", __FILE__, __LINE__); return FALSE; } memset(mmlContent, 0, mmlContentLen+2); memcpy(mmlContent, sFindStr, mmlContentLen); strcat(mmlContent, FLAG_COLON); //printf("mmlContent:%s\n", mmlContent); iContentLen = 0; sFindStr = NULL; mmlInfo = sFinsh+2; sFinsh = NULL; bRet = parserContent(mmlContent, mmlContentParaList, &mmlContentParaNum); if(FALSE == bRet) { return bRet; } } else { filelog(CIS_SRV_LOG, "Error:mmlInfo not mml content finsh flag " "in file=[%s] at line=[%d]\n", __FILE__, __LINE__); return FALSE; } } //else //{ // filelog(CIS_SRV_LOG, "Error:mmlInfo not mml content in file=[%s] " // "at line=[%d]\n", __FILE__, __LINE__); // return FALSE; //} //分析出报尾 if((sFindStr = strstr(mmlInfo, MML_TAIL)) != NULL) { filelog(CIS_SRV_LOG, "Parser message tail\n"); //PrintFormat(PROMPT, "mmlInfo=[%d][%s]\n", strlen(mmlInfo), mmlInfo); if((sFinsh = strstr(mmlInfo, FLAG_FINSH)) != NULL) { //去掉报文类别标识及结束标志 sFindStr += MAX_LEN_FLAG_MSG; sFinsh -= 1; iContentLen = sFinsh - sFindStr; if(iContentLen <=0 || iContentLen > MAX_LEN_MML_TAIL) { filelog(CIS_SRV_LOG, "Error:mmlTailLen=[%d] invalid in file=" "[%s] at line=[%d]\n", iContentLen, __FILE__, __LINE__); return FALSE; } mmlTailLen = iContentLen; mmlTail = new char[mmlTailLen+2]; if(NULL == mmlTail) { filelog(CIS_SRV_LOG, "Error:allocate memory fail in file=[%s]" "at line=[%d]\n", __FILE__, __LINE__); return FALSE; } memset(mmlTail, 0, mmlTailLen+2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -