Bool ParseDocument(void* pDoc, const void* pData) { //数据编码格式检验 CFile::CodeType eCodeType = CFile::GetCodeType(pData); A_Exception(eCodeType != CFile::CODE_UNICODE && "CXmlFile Cannot Parser Unicode."); if (eCodeType == CFile::CODE_ASCII) { xml_document<Char> xmlDoc; try { xmlDoc.parse<0>((Char*)pData); } catch (rapidxml::parse_error& sExp) { FmtError("rapidxml parse error, what: %s, where: %s", sExp.what(), sExp.where<Char>()); return false; } xml_node<Char>* pRoot = xmlDoc.first_node(); if (pRoot) { AXmlElement* pXmlNode = ((AXmlDocument*)pDoc)->GetRoot(); return ParseXmlNode<AString, Char>(pRoot, pXmlNode); } } else if (eCodeType == CFile::CODE_UTF8) { xml_document<Utf8> xmlDoc; try { xmlDoc.parse<0>((Utf8*)pData); } catch (rapidxml::parse_error& sExp) { FmtError("rapidxml parse error, what: %s, where: %s", sExp.what(), sExp.where<Char>()); return false; } xml_node<Utf8>* pRoot = xmlDoc.first_node(); if (pRoot) { UXmlElement* pXmlNode = ((UXmlDocument*)pDoc)->GetRoot(); return ParseXmlNode<UString, Utf8>(pRoot, pXmlNode); } } return false; }
virtual PVoid Run(void* pArgs = 0) { if(m_pProto && g_App) { Bool bDispatch = g_App->DispatchProto(m_sXid, m_iSid, m_pProto); if (!bDispatch) FmtError("Dispatch Protocol Failed, Xid: (%u, %u), ProtocolId: %u, Sid: %u", m_sXid.Type, m_sXid.Id, m_pProto->GetType(), m_iSid); } return 0; }
CProtocol* CProtocolManager::CreateProtocol(ProtoType iType) { ProtocolMap::iterator it = m_mRegister.find(iType); if (it == m_mRegister.end()) { FmtError("Protocol Unregister, Type: %d", iType); T_Exception("Protocol Unregister."); return 0; } CProtocol* pProto = m_mRegister[iType]->Clone(); return pProto; }
virtual PVoid Run(void* pArgs = 0) { if(m_pMsg && g_App) { if (m_vXid.size()) { for (Size_t i=0;i<m_vXid.size();i++) { m_pMsg->Target = m_vXid[i]; Bool bDispatch = g_App->DispatchMsg(m_vXid[i], m_pMsg); if (!bDispatch) FmtError("Dispatch Message Failed, Xid: (%u, %u), MsgId: %u", m_vXid[i].Id, m_pMsg->Msg); } } else { Bool bDispatch = g_App->DispatchMsg(m_sXid, m_pMsg); if (!bDispatch) FmtError("Dispatch Message Failed, Xid: (%u, %u), MsgId: %u", m_sXid.Id, m_pMsg->Msg); } } return 0; }
static void FFinish(void) { //========================= if( StmtProc == PR_FMT ) { for(;;) { if( *Fmt_charptr != ' ' ) break; ++Fmt_charptr; if( Fmt_charptr >= Fmt_end ) break; } if( ( Fmt_charptr < Fmt_end ) && ( *Fmt_charptr != '!' ) ) { FmtError( FM_NO_EOS ); } } }