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

📄 nwgcmlhandler.cpp

📁 mtk simulator v2 new source code
💻 CPP
📖 第 1 页 / 共 3 页
字号:
**************************************************************/


ERR CNWGCMLHandler::GetFormatDetails(MSXML::IXMLDOMNode* pNode, CFormat& format,CPtrList* pDataList,CPtrList* pDataTypeList)
{
	MSXML::IXMLDOMNamedNodeMap*		pNodeMap	=	NULL;
	MSXML::IXMLDOMNode*		pChildNode	=	NULL;
	MSXML::IXMLDOMNodeList*		pChildNodeList; 

	LPTSTR		pVal	=	NULL;
	CDataType*	pdataType;
	CDataList*		pdataObj;
	pNodeMap = GetAllAttributes(pNode);

	if(pNodeMap)
	{
		GetAttributeValue(pNodeMap,TAG_NAME,pVal);
		if(pVal){
			format.SetName(CString(pVal));
			if(CString(_T("fmt4")) == _T("fmt4"))
				int kkk = 0;
			DELETE_MEM_ARR(pVal);
		}
		GetAttributeValue(pNodeMap,TAG_PLUGIN,pVal);
		if(pVal){
			format.SetPlugin(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}

		GetAttributeValue(pNodeMap,TAG_DLGNAME,pVal);
		if(pVal){
			format.SetDialog(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}

		GetAttributeValue(pNodeMap,TAG_INPUTMODE,pVal);
		if(pVal){
			format.SetInputMode(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}
		if(GetAllChildren(pNode,pChildNodeList) == SUCCESS)
		{
			CVar		var;

			long iListSize = GetListSize(pChildNodeList);
			CObjectSearch<CDataType> objectSearch;
			while(iListSize)
			{
				GetNextNode(pChildNodeList,pChildNode);
				pVal = GetAttributeValue(pChildNode,TAG_NAME);
				if(pVal)
				{
					var.SetName(pVal);
					DELETE_MEM_ARR(pVal);
				}
				pVal = GetAttributeValue(pChildNode,TAG_TYPE);
				if(pVal)
				{

					if(objectSearch.GetObject(pDataTypeList,CString(pVal),&pdataType)==SUCCESS)
					{
						var.SetDataType(*pdataType);
					}

					DELETE_MEM_ARR(pVal);
				}
				pVal = GetAttributeValue(pChildNode,TAG_COUNT);
				if(pVal)
				{
					var.SetCount(_ttoi(CString(pVal)));
					DELETE_MEM_ARR(pVal);
				}
				pVal = GetAttributeValue(pChildNode,TAG_VALUESIZE);
				if(pVal)
				{
					var.SetValueSize(_ttoi(CString(pVal)));
					DELETE_MEM_ARR(pVal);
				}
				pVal = GetAttributeValue(pChildNode,TAG_DESCRIPTION);
				if(pVal)
				{
					var.SetDescription(CString(pVal));
					DELETE_MEM_ARR(pVal);
				}
				format.AddVariable(var);
				RELEASE_OBJECT(pChildNode);
				--iListSize;
			}
			RELEASE_OBJECT(pChildNodeList);
		}
		GetAttributeValue(pNodeMap,TAG_DATALISTNAME,pVal);
		if(pVal){
			CObjectSearch<CDataList> dataSearch;
			if(dataSearch.GetObject(pDataList,pVal,&pdataObj)==SUCCESS)
			{
				format.SetDataList(*pdataObj);
			}
			DELETE_MEM_ARR(pVal);
		}
		RELEASE_OBJECT(pNodeMap)
	}      
	return SUCCESS;


}

/**************************************************************

	FUNCTION NAME		: GetIncomingMessageList

  	PURPOSE				: Return a list of all Incoming messages objects to the upper layer

	INPUT PARAMETERS	: nil

	OUTPUT PARAMETERS	: nil

	RETURNS				: CPtrList*

	REMARKS				: This function looks for all the incoming messages in the XML.
							Makes objects of these incoming messages and returns a list of 
							objects.

**************************************************************/

CPtrList* CNWGCMLHandler::GetIncomingMessageList()
{
	MSXML::IXMLDOMNodeList*		pNodeList; 
	MSXML::IXMLDOMNode*			pNode; 
	UINT16	iCount	=	0;
	INT32	nTotalNodes			=	0;
	CPtrList*	pPtrList	=	NULL;
	CIncomingMsg*	pIncomingMessage	=	NULL;

	if(GetTotalNodesOfType(TAG_INCOMINGMSG,pNodeList,&nTotalNodes) == SUCCESS)
	{
		while(nTotalNodes)
		{
			if(!pPtrList)
				ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
			pNodeList->nextNode(&pNode);
			ALLOCATE_MEM(pIncomingMessage,CIncomingMsg);
			GetIncomingMessageDetails(pNode,*pIncomingMessage);
			pPtrList->AddTail(pIncomingMessage);
			--nTotalNodes;
			RELEASE_OBJECT(pNode);
		}

	}

	return pPtrList;
}

/**************************************************************

	FUNCTION NAME		: GetOutGoingMessageList

  	PURPOSE				: Return a list of all Outgoing messages objects to the upper layer

	INPUT PARAMETERS	: nil

	OUTPUT PARAMETERS	: nil

	RETURNS				: CPtrList*

	REMARKS				: This function looks for all the outgoing messages in the XML.
							Makes objects of these outgoing messages and returns a list of 
							objects.

**************************************************************/


CPtrList* CNWGCMLHandler::GetOutGoingMessageList()
{
	MSXML::IXMLDOMNodeList*		pNodeList; 
	MSXML::IXMLDOMNode*			pNode; 
	UINT16	iCount	=	0;
	INT32	nTotalNodes			=	0;
	CPtrList*	pPtrList	=	NULL;
	COutgoingMessage*	pOutgoingMessage	=	NULL;

	if(GetTotalNodesOfType(TAG_OUTGOINGMSG,pNodeList,&nTotalNodes) == SUCCESS)
	{
		while(nTotalNodes)
		{
			if(!pPtrList)
				ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
			pNodeList->nextNode(&pNode);
			ALLOCATE_MEM(pOutgoingMessage,COutgoingMessage);
			GetOutgoingMessageDetails(pNode,*pOutgoingMessage);
			pPtrList->AddTail(pOutgoingMessage);
			--nTotalNodes;
			RELEASE_OBJECT(pNode);
		}

	}

	return pPtrList;
}
/**************************************************************

	FUNCTION NAME		: GetAsyncMessageList

  	PURPOSE				: Return a list of all Async messages objects to the upper layer

	INPUT PARAMETERS	: nil

	OUTPUT PARAMETERS	: nil

	RETURNS				: CPtrList*

	REMARKS				: This function looks for all the Async messages in the XML.
							Makes objects of these Async messages and returns a list of 
							objects.

**************************************************************/

CPtrList* CNWGCMLHandler::GetAsyncMessageList()
{
	MSXML::IXMLDOMNodeList*		pNodeList; 
	MSXML::IXMLDOMNode*			pNode; 
	UINT16	iCount	=	0;
	INT32	nTotalNodes			=	0;
	CPtrList*	pPtrList	=	NULL;
	CAsyncMessageSeq*	pMessageSeq	=	NULL;

	if(GetTotalNodesOfType(TAG_ASYNCMSGSEQ,pNodeList,&nTotalNodes) == SUCCESS)
	{
		while(nTotalNodes)
		{
			if(!pPtrList)
				ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
			pNodeList->nextNode(&pNode);
			ALLOCATE_MEM(pMessageSeq,CAsyncMessageSeq);
			GetAsyncMessageDetails(pNode,*pMessageSeq);
			pPtrList->AddTail(pMessageSeq);
			--nTotalNodes;
			RELEASE_OBJECT(pNode);
		}

	}

	return pPtrList;
}

/**************************************************************

	FUNCTION NAME		: GetAsyncMessageDetails

  	PURPOSE				: Gets the AsyncMessage informationn object from DOM node

	INPUT PARAMETERS	: MSXML::IXMLDOMNode*

	OUTPUT PARAMETERS	: CAsyncMessageSeq

	RETURNS				: ERR

	REMARKS				: This function creates a CAsyncMessageSeq object out of the DOM node 
							and passes the object as an output paramater

**************************************************************/

ERR CNWGCMLHandler::GetAsyncMessageDetails(MSXML::IXMLDOMNode* pNode, CAsyncMessageSeq& message)
{
	ERR			err		=	FAILURE;
	MSXML::IXMLDOMNode*		pChildNode	=	NULL;
	MSXML::IXMLDOMNodeList*		pChildNodeList; 
	MSXML::IXMLDOMNamedNodeMap*		pNodeMap	=	NULL;
	LPTSTR		pVal	=	NULL;

	pNodeMap = GetAllAttributes(pNode);
	if(pNodeMap)
	{
		GetAttributeValue(pNodeMap,TAG_ID,pVal);
		if(pVal){
			message.SetMessageId(_ttoi(CString(pVal)));
			DELETE_MEM_ARR(pVal);
		}
		GetAttributeValue(pNodeMap,TAG_NAME,pVal);
		if(pVal){
			message.SetMessageName(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}

		GetAttributeValue(pNodeMap,TAG_APPID,pVal);
		if(pVal){
			message.SetAppId(_ttoi(CString(pVal)));
			DELETE_MEM_ARR(pVal);
		}

		RELEASE_OBJECT(pNodeMap)
	}

	if(GetAllChildren(pNode,pChildNodeList) == SUCCESS)
	{
		long iListSize = GetListSize(pChildNodeList);
		while(iListSize)
		{
			GetNextNode(pChildNodeList,pChildNode);
			pVal = GetAttributeValue(pChildNode,TAG_ID);
			if(pVal)
			{
				message.AddMessage(_ttoi(pVal));
				DELETE_MEM_ARR(pVal);
			}
			RELEASE_OBJECT(pChildNode);
			--iListSize;
		}
		RELEASE_OBJECT(pChildNodeList);
	}


	return err;
}

/**************************************************************

	FUNCTION NAME		: GetIncomingMessageDetails

  	PURPOSE				: Gets the Incoming message informationn object from DOM node

	INPUT PARAMETERS	: MSXML::IXMLDOMNode*

	OUTPUT PARAMETERS	: CIncomingMsg

	RETURNS				: ERR

	REMARKS				: This function creates a CIncomingMsg object out of the DOM node 
							and passes the object as an output paramater

**************************************************************/

ERR CNWGCMLHandler::GetIncomingMessageDetails(MSXML::IXMLDOMNode* pNode, CIncomingMsg& message)
{
	ERR			err		=	FAILURE;
	MSXML::IXMLDOMNode*		pChildNode	=	NULL;
	MSXML::IXMLDOMNodeList*		pChildNodeList; 
	LPTSTR		pval	=	NULL;

	if((err = GetMessageDetails(pNode,message)) == SUCCESS)
	{
		if(GetAllChildren(pNode,pChildNodeList) == SUCCESS)
		{
			long iListSize = GetListSize(pChildNodeList);
			while(iListSize)
			{
				GetNextNode(pChildNodeList,pChildNode);
				pval = GetAttributeValue(pChildNode,TAG_ID);
				if(pval)
				{
					message.AddResponseMessageId(_ttoi(pval));
					DELETE_MEM_ARR(pval);
				}
				pval = GetAttributeValue(pChildNode,TAG_INPUT_RESPONSE_SEQ);
				if(pval)
				{
					message.AddAsyncSeqId(_ttoi(pval));
					DELETE_MEM_ARR(pval);
				}
				RELEASE_OBJECT(pChildNode);
				--iListSize;
			}
			RELEASE_OBJECT(pChildNodeList);
		}

	}

	return err;
}

/**************************************************************

	FUNCTION NAME		: GetOutgoingMessageDetails

  	PURPOSE				: Gets the Outgoing message informationn object from DOM node

	INPUT PARAMETERS	: MSXML::IXMLDOMNode*

	OUTPUT PARAMETERS	: COutgoingMessage

	RETURNS				: ERR

	REMARKS				: This function creates a COutgoingMessage object out of the DOM node 
							and passes the object as an output paramater

**************************************************************/

ERR CNWGCMLHandler::GetOutgoingMessageDetails(MSXML::IXMLDOMNode* pNode, COutgoingMessage& message)
{
	ERR			err		=	FAILURE;

	if((err = GetMessageDetails(pNode,message)) == SUCCESS)
	{


	}

	return err;
}
/**************************************************************

	FUNCTION NAME		: GetMessageDetails

  	PURPOSE				: Gets the  message informationn object from DOM node

	INPUT PARAMETERS	: MSXML::IXMLDOMNode*

	OUTPUT PARAMETERS	: CMessage

	RETURNS				: ERR

	REMARKS				: This function creates a CMessage object out of the DOM node 
							and passes the object as an output paramater

**************************************************************/


ERR CNWGCMLHandler::GetMessageDetails(MSXML::IXMLDOMNode* pNode, CMessage& message)
{
	MSXML::IXMLDOMNamedNodeMap*		pNodeMap	=	NULL;
	LPTSTR		pVal	=	NULL;

	pNodeMap = GetAllAttributes(pNode);
	if(pNodeMap)
	{
		GetAttributeValue(pNodeMap,TAG_ID,pVal);
		if(pVal){
			message.SetMessageId(_ttoi(CString(pVal)));
			DELETE_MEM_ARR(pVal);
		}

		GetAttributeValue(pNodeMap,TAG_NAME,pVal);
		if(pVal){
			message.SetMessageName(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}

		GetAttributeValue(pNodeMap,TAG_APPID,pVal);
		if(pVal){
			message.SetAppId(_ttoi(CString(pVal)));
			DELETE_MEM_ARR(pVal);
		}
		GetAttributeValue(pNodeMap,TAG_FORMATNAME,pVal);
		if(pVal){
			message.SetFormat(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}
		GetAttributeValue(pNodeMap,TAG_PLUGIN,pVal);
		if(pVal){
			message.SetPluginName(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}
		//get response mode auto / manual
		GetAttributeValue(pNodeMap,TAG_RESPONSE,pVal);
		if(pVal){
			message.SetResponseMode(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}


	}
	RELEASE_OBJECT(pNodeMap);

	return SUCCESS;
}
/**************************************************************

	FUNCTION NAME		: FreeAll

  	PURPOSE				: Frees the DOM memory

	INPUT PARAMETERS	: nil

	OUTPUT PARAMETERS	: nil

	RETURNS				: void

	REMARKS				: nil
**************************************************************/

void CNWGCMLHandler::FreeAll()
{
	if(m_pXMLDomDocument)

⌨️ 快捷键说明

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