//////////////////////////////////////////////////////////////////////////// // Helper function: Walk all the Elements at a particular node //////////////////////////////////////////////////////////////////////////// HRESULT CXMLDocument::WalkTree(int iLevel, MSXML2::IXMLDOMNode* pNode) { HRESULT hr = S_OK; CComBSTR bstrNodeName; pNode->get_nodeName(&bstrNodeName); CComVariant vNodeValue; pNode->get_nodeValue(&vNodeValue); vNodeValue.ChangeType(VT_BSTR); CString strValueString = V_BSTR(&vNodeValue); if (m_pCallbackFunction) m_pCallbackFunction(iLevel, CString(bstrNodeName), (LPCSTR)NULL, strValueString, m_pCallbackParam); MSXML2::IXMLDOMNamedNodeMapPtr pAttributes = NULL; if (SUCCEEDED(pNode->get_attributes(&pAttributes)) && (pAttributes != NULL)) { MSXML2::IXMLDOMNodePtr pAttribute = NULL; pAttributes->nextNode(&pAttribute); bool bRetVal = true; while (pAttribute) { CComBSTR bstrAttribName; pAttribute->get_nodeName(&bstrAttribName); CComVariant vNodeValue; pAttribute->get_nodeValue(&vNodeValue); vNodeValue.ChangeType(VT_BSTR); CString strValueString = V_BSTR(&vNodeValue); if (m_pCallbackFunction) bRetVal = m_pCallbackFunction(iLevel+1, CString(bstrNodeName), CString(bstrAttribName), strValueString, m_pCallbackParam); if (!bRetVal) { // set complete error message with node name and all attribute values m_strErrorNode = bstrNodeName; return S_FALSE; } pAttributes->nextNode(&pAttribute); } } MSXML2::IXMLDOMNodePtr pChild = NULL; pNode->get_firstChild(&pChild); while (pChild) { if (WalkTree(iLevel+1, pChild) != S_OK) return S_FALSE; MSXML2::IXMLDOMNode* pNext = NULL; pChild->get_nextSibling(&pNext); pChild = pNext; } return S_OK; }
//////////////////////////////////////////////////////////////////////////// // Helper function: Walk all the Elements at a particular node //////////////////////////////////////////////////////////////////////////// HRESULT CXMLDocument::WalkTree(int iLevel, MSXML::IXMLDOMNode* pNode) { HRESULT hr = S_OK; CComBSTR bstrNodeName; pNode->get_nodeName(&bstrNodeName); CComVariant vNodeValue; pNode->get_nodeValue(&vNodeValue); vNodeValue.ChangeType(VT_BSTR); CString strValueString = V_BSTR(&vNodeValue); if (m_pCallbackFunction) m_pCallbackFunction(iLevel, CString(bstrNodeName), strValueString, m_pCallbackParam); MSXML::IXMLDOMNamedNodeMapPtr pAttributes = NULL; if (SUCCEEDED(pNode->get_attributes(&pAttributes)) && (pAttributes != NULL)) { MSXML::IXMLDOMNodePtr pAttribute = NULL; pAttributes->nextNode(&pAttribute); while (pAttribute) { CComBSTR bstrNodeName; pAttribute->get_nodeName(&bstrNodeName); CComVariant vNodeValue; pAttribute->get_nodeValue(&vNodeValue); vNodeValue.ChangeType(VT_BSTR); CString strValueString = V_BSTR(&vNodeValue); if (m_pCallbackFunction) m_pCallbackFunction(iLevel+1, CString(bstrNodeName), strValueString, m_pCallbackParam); pAttributes->nextNode(&pAttribute); } } MSXML::IXMLDOMNodePtr pChild = NULL; pNode->get_firstChild(&pChild); while (pChild) { WalkTree(iLevel+1, pChild); MSXML::IXMLDOMNode* pNext = NULL; pChild->get_nextSibling(&pNext); pChild = pNext; } return S_OK; }
void CMySocket::OnAccept(int nErrorCode) { if(m_pCallbackFunction) m_pCallbackFunction(m_dwCookie,FSOCK_ACCEPT,NULL,0,nErrorCode); CAsyncSocket::OnAccept(nErrorCode); }
void CMySocket::OnConnect(int nErrorCode) { if(m_pCallbackFunction) m_pCallbackFunction(m_dwCookie,FSOCK_CONNECT,NULL,0,nErrorCode); CAsyncSocket::OnConnect(nErrorCode); }
void CSMSReceiver::EvolStatusQuitSent(CString csData) { m_nStatus = POP3_STATUS_INIT; if(m_pCallbackFunction) m_pCallbackFunction(m_dwCookie, m_slMessages); }
void GTStaticCallback::Execute(void) { if(m_pCallbackFunction) { m_pCallbackFunction(m_pUserParam); } }
//////////////////////////////////////////////////////////////////////////// // Helper function: //////////////////////////////////////////////////////////////////////////// HRESULT CXMLDocument::CheckHR(HRESULT hr, LPCSTR pstrErrorText) { if (FAILED(hr)) { CString strErrorText; if (pstrErrorText) { strErrorText = "Error "; strErrorText += pstrErrorText; } else { strErrorText.Format("Error result %lx", hr); } if (m_pCallbackFunction) m_pCallbackFunction(0, (LPCSTR)NULL, (LPCSTR)NULL, strErrorText, m_pCallbackParam); } return hr; }
void CMySocket::OnReceive(int nErrorCode) { Sleep(400); BYTE data[65000]; memset(data,0,65000); int nLong=0; int nReceived=0; do { nLong=Receive(&data[nReceived],65000); if(nLong>0) nReceived+=nLong; } while(nLong>0); if(m_pCallbackFunction) m_pCallbackFunction(m_dwCookie,FSOCK_RECEIVE,(char*)data,nReceived,nErrorCode); CAsyncSocket::OnReceive(nErrorCode); }
//////////////////////////////////////////////////////////////////////////// // Helper function: //////////////////////////////////////////////////////////////////////////// HRESULT CXMLDocument::ReportError(MSXML2::IXMLDOMParseError* pXMLError) { CComBSTR bstrReason; HRESULT hr = pXMLError->get_reason(&bstrReason); hr = CheckHR(hr, "getting reason for the error"); CString strError = "Error: " + CString(bstrReason); long line = -1; hr = pXMLError->get_line(&line); hr = CheckHR(hr, "getting line"); if (line > 0) { long linePos = -1; hr = pXMLError->get_linepos(&linePos); hr = CheckHR(hr, "getting line position"); long lErrorCode = -1; hr = pXMLError->get_errorCode(&lErrorCode); hr = CheckHR(hr, "getting error code"); CComBSTR bstrURL; hr = pXMLError->get_url(&bstrURL); hr = CheckHR(hr, "getting URL"); CString strError1; strError1.Format(" @ line %d, position %d in \"%S\".", line, linePos, bstrURL); strError += strError1; } if (m_pCallbackFunction) m_pCallbackFunction(0, (LPCSTR)NULL, (LPCSTR)NULL, strError, m_pCallbackParam); return E_FAIL; }
void CMySocket::OnClose(int nErrorCode) { if(m_pCallbackFunction) m_pCallbackFunction(m_dwCookie,FSOCK_CLOSE,NULL,0,nErrorCode); }