//------------------------------------------------------------------------------------- void Config::writeAccountName(const char* name) { if(!useLastAccountName_) return; TiXmlNode* rootNode = NULL; XmlPlus* xml = new XmlPlus(Resmgr::getSingleton().matchRes(fileName_).c_str()); if(!xml->isGood()) { ERROR_MSG(boost::format("Config::writeAccountName: load %1% is failed!\n") % fileName_.c_str()); SAFE_RELEASE(xml); return; } rootNode = xml->getRootNode("accountName"); if(rootNode != NULL) { rootNode->SetValue(name); } xml->getTxdoc()->SaveFile(fileName_.c_str()); SAFE_RELEASE(xml); }
//------------------------------------------------------------------------------------- std::string MessageHandlers::getDigestStr() { static KBE_MD5 md5; if(!md5.isFinal()) { std::map<uint16, std::pair< std::string, std::string> > errsDescrs; TiXmlNode *rootNode = NULL; XmlPlus* xml = new XmlPlus(Resmgr::getSingleton().matchRes("server/server_errors.xml").c_str()); if(!xml->isGood()) { ERROR_MSG(fmt::format("MessageHandlers::getDigestStr(): load {} is failed!\n", Resmgr::getSingleton().matchRes("server/server_errors.xml"))); SAFE_RELEASE(xml); return ""; } int32 isize = 0; rootNode = xml->getRootNode(); XML_FOR_BEGIN(rootNode) { TiXmlNode* node = xml->enterNode(rootNode->FirstChild(), "id"); TiXmlNode* node1 = xml->enterNode(rootNode->FirstChild(), "descr"); int32 val1 = xml->getValInt(node); md5.append((void*)&val1, sizeof(int32)); std::string val2 = xml->getKey(rootNode); md5.append((void*)val2.c_str(), val2.size()); std::string val3 = xml->getVal(node1); md5.append((void*)val3.c_str(), val3.size()); isize++; } XML_FOR_END(rootNode); SAFE_RELEASE(xml); md5.append((void*)&isize, sizeof(int32)); std::vector<MessageHandlers*>& msgHandlers = messageHandlers(); isize += msgHandlers.size(); md5.append((void*)&isize, sizeof(int32)); std::vector<MessageHandlers*>::const_iterator rootiter = msgHandlers.begin(); for(; rootiter != msgHandlers.end(); rootiter++) { isize += (*rootiter)->msgHandlers().size(); md5.append((void*)&isize, sizeof(int32)); MessageHandlerMap::const_iterator iter = (*rootiter)->msgHandlers().begin(); for(; iter != (*rootiter)->msgHandlers().end(); iter++) { MessageHandler* pMessageHandler = iter->second; md5.append((void*)pMessageHandler->name.c_str(), pMessageHandler->name.size()); md5.append((void*)&pMessageHandler->msgID, sizeof(MessageID)); md5.append((void*)&pMessageHandler->msgLen, sizeof(int32)); md5.append((void*)&pMessageHandler->exposed, sizeof(bool)); int32 argsize = pMessageHandler->pArgs->strArgsTypes.size(); md5.append((void*)&argsize, sizeof(int32)); int32 argsdataSize = pMessageHandler->pArgs->dataSize(); md5.append((void*)&argsdataSize, sizeof(int32)); int32 argstype = (int32)pMessageHandler->pArgs->type(); md5.append((void*)&argstype, sizeof(int32)); std::vector<std::string>::iterator saiter = pMessageHandler->pArgs->strArgsTypes.begin(); for(; saiter != pMessageHandler->pArgs->strArgsTypes.end(); saiter++) { md5.append((void*)(*saiter).c_str(), (*saiter).size()); } } } }
//------------------------------------------------------------------------------------- bool ServerConfig::loadConfig(std::string fileName) { TiXmlNode* node = NULL, *rootNode = NULL; XmlPlus* xml = new XmlPlus(Resmgr::matchRes(fileName).c_str()); if(!xml->isGood()) { ERROR_MSG(" ServerConfig::loadConfig: load %s is failed!\n", fileName.c_str()); SAFE_RELEASE(xml); return false; } rootNode = xml->getRootNode("packetAlwaysContainLength"); if(rootNode != NULL){ Mercury::g_packetAlwaysContainLength = xml->getValInt(rootNode) != 0; rootNode = NULL; } rootNode = xml->getRootNode("trace_packet"); if(rootNode != NULL) { Mercury::g_trace_packet = xml->getValInt(rootNode); rootNode = NULL; if(Mercury::g_trace_packet > 3) Mercury::g_trace_packet = 0; } rootNode = xml->getRootNode("debugEntity"); if(rootNode != NULL) { g_debugEntity = xml->getValInt(rootNode) > 0; rootNode = NULL; } rootNode = xml->getRootNode("gameUpdateHertz"); if(rootNode != NULL){ gameUpdateHertz_ = xml->getValInt(rootNode); rootNode = NULL; } rootNode = xml->getRootNode("cellapp"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_cellAppInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "entryScriptFile"); if(node != NULL) strncpy((char*)&_cellAppInfo.entryScriptFile, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; TiXmlNode* aoiNode = xml->enterNode(rootNode, "defaultAoIRadius"); if(aoiNode != NULL) { node = NULL; node = xml->enterNode(aoiNode, "radius"); if(node != NULL) _cellAppInfo.defaultAoIRadius = float(xml->getValFloat(node)); node = NULL; node = xml->enterNode(aoiNode, "hysteresisArea"); if(node != NULL) _cellAppInfo.defaultAoIHysteresisArea = float(xml->getValFloat(node)); } } rootNode = NULL; rootNode = xml->getRootNode("baseapp"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "entryScriptFile"); if(node != NULL) strncpy((char*)&_baseAppInfo.entryScriptFile, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_baseAppInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "externalInterface"); if(node != NULL) strncpy((char*)&_baseAppInfo.externalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "externalPorts_min"); if(node != NULL) _baseAppInfo.externalPorts_min = xml->getValInt(node); node = NULL; node = xml->enterNode(rootNode, "externalPorts_max"); if(node != NULL) _baseAppInfo.externalPorts_max = xml->getValInt(node); if(_baseAppInfo.externalPorts_min < 0) _baseAppInfo.externalPorts_min = 0; if(_baseAppInfo.externalPorts_max < _baseAppInfo.externalPorts_min) _baseAppInfo.externalPorts_max = _baseAppInfo.externalPorts_min; node = NULL; node = xml->enterNode(rootNode, "archivePeriod"); if(node != NULL) _baseAppInfo.archivePeriod = float(xml->getValFloat(node)); node = NULL; node = xml->enterNode(rootNode, "backupPeriod"); if(node != NULL) _baseAppInfo.backupPeriod = float(xml->getValFloat(node)); node = NULL; node = xml->enterNode(rootNode, "backUpUndefinedProperties"); if(node != NULL) _baseAppInfo.backUpUndefinedProperties = xml->getValInt(node) > 0; } rootNode = NULL; rootNode = xml->getRootNode("dbmgr"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_dbmgrInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "dbAccountEntityScriptType"); if(node != NULL) strncpy((char*)&_dbmgrInfo.dbAccountEntityScriptType, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "type"); if(node != NULL) strncpy((char*)&_dbmgrInfo.db_type, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "host"); if(node != NULL) strncpy((char*)&_dbmgrInfo.db_ip, xml->getValStr(node).c_str(), MAX_IP); node = NULL; node = xml->enterNode(rootNode, "port"); if(node != NULL) _dbmgrInfo.db_port = xml->getValInt(node); node = NULL; node = xml->enterNode(rootNode, "username"); if(node != NULL) strncpy((char*)&_dbmgrInfo.db_username, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "password"); if(node != NULL) strncpy((char*)&_dbmgrInfo.db_password, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "databaseName"); if(node != NULL) strncpy((char*)&_dbmgrInfo.db_name, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "numConnections"); if(node != NULL) _dbmgrInfo.db_numConnections = xml->getValInt(node); } rootNode = NULL; rootNode = xml->getRootNode("loginapp"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_loginAppInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "externalInterface"); if(node != NULL) strncpy((char*)&_loginAppInfo.externalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "externalPorts_min"); if(node != NULL) _loginAppInfo.externalPorts_min = xml->getValInt(node); node = NULL; node = xml->enterNode(rootNode, "externalPorts_max"); if(node != NULL) _loginAppInfo.externalPorts_max = xml->getValInt(node); if(_loginAppInfo.externalPorts_min < 0) _loginAppInfo.externalPorts_min = 0; if(_loginAppInfo.externalPorts_max < _loginAppInfo.externalPorts_min) _loginAppInfo.externalPorts_max = _loginAppInfo.externalPorts_min; } rootNode = NULL; rootNode = xml->getRootNode("cellappmgr"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_cellAppMgrInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); } rootNode = NULL; rootNode = xml->getRootNode("baseappmgr"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_baseAppMgrInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); } rootNode = NULL; rootNode = xml->getRootNode("kbmachine"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_kbMachineInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "externalInterface"); if(node != NULL) strncpy((char*)&_kbMachineInfo.externalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = NULL; node = xml->enterNode(rootNode, "externalPorts_min"); if(node != NULL) _kbMachineInfo.externalPorts_min = xml->getValInt(node); node = NULL; node = xml->enterNode(rootNode, "externalPorts_max"); if(node != NULL) _kbMachineInfo.externalPorts_max = xml->getValInt(node); if(_kbMachineInfo.externalPorts_min < 0) _kbMachineInfo.externalPorts_min = 0; if(_kbMachineInfo.externalPorts_max < _kbMachineInfo.externalPorts_min) _kbMachineInfo.externalPorts_max = _kbMachineInfo.externalPorts_min; } rootNode = NULL; rootNode = xml->getRootNode("kbcenter"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_kbCenterInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); } rootNode = NULL; rootNode = xml->getRootNode("bots"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "bots"); if(node != NULL) strncpy((char*)&_botsInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); } rootNode = NULL; rootNode = xml->getRootNode("messagelog"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "messagelog"); if(node != NULL) strncpy((char*)&_messagelogInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); } rootNode = NULL; rootNode = xml->getRootNode("resourcemgr"); if(rootNode != NULL) { node = NULL; node = xml->enterNode(rootNode, "resourcemgr"); if(node != NULL) strncpy((char*)&_resourcemgrInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); } SAFE_RELEASE(xml); return true; }
//------------------------------------------------------------------------------------- bool Config::loadConfig(std::string fileName) { fileName_ = fileName; TiXmlNode* rootNode = NULL; XmlPlus* xml = new XmlPlus(Resmgr::getSingleton().matchRes(fileName_).c_str()); if(!xml->isGood()) { ERROR_MSG(boost::format("Config::loadConfig: load %1% is failed!\n") % fileName.c_str()); SAFE_RELEASE(xml); return false; } rootNode = xml->getRootNode("packetAlwaysContainLength"); if(rootNode != NULL){ Mercury::g_packetAlwaysContainLength = xml->getValInt(rootNode) != 0; } rootNode = xml->getRootNode("trace_packet"); if(rootNode != NULL) { TiXmlNode* childnode = xml->enterNode(rootNode, "debug_type"); if(childnode) Mercury::g_trace_packet = xml->getValInt(childnode); if(Mercury::g_trace_packet > 3) Mercury::g_trace_packet = 0; childnode = xml->enterNode(rootNode, "use_logfile"); if(childnode) Mercury::g_trace_packet_use_logfile = (xml->getValStr(childnode) == "true"); childnode = xml->enterNode(rootNode, "disables"); if(childnode) { do { if(childnode->FirstChild() != NULL) { std::string c = childnode->FirstChild()->Value(); c = strutil::kbe_trim(c); if(c.size() > 0) { Mercury::g_trace_packet_disables.push_back(c); } } }while((childnode = childnode->NextSibling())); } } rootNode = xml->getRootNode("debugEntity"); if(rootNode != NULL) { g_debugEntity = xml->getValInt(rootNode) > 0; } rootNode = xml->getRootNode("app_publish"); if(rootNode != NULL) { g_appPublish = xml->getValInt(rootNode); } rootNode = xml->getRootNode("channelCommon"); if(rootNode != NULL) { TiXmlNode* childnode = xml->enterNode(rootNode, "timeout"); if(childnode) { TiXmlNode* childnode1 = xml->enterNode(childnode, "internal"); if(childnode1) { channelInternalTimeout_ = KBE_MAX(1.f, float(xml->getValFloat(childnode1))); Mercury::g_channelInternalTimeout = channelInternalTimeout_; } childnode1 = xml->enterNode(childnode, "external"); if(childnode) { channelExternalTimeout_ = KBE_MAX(1.f, float(xml->getValFloat(childnode1))); Mercury::g_channelExternalTimeout = channelExternalTimeout_; } } childnode = xml->enterNode(rootNode, "receiveWindowOverflow"); if(childnode) { TiXmlNode* childnode1 = xml->enterNode(childnode, "messages"); if(childnode1) { childnode1 = xml->enterNode(childnode, "internal"); if(childnode1) Mercury::g_intReceiveWindowMessagesOverflow = KBE_MAX(16, xml->getValInt(childnode1)); childnode1 = xml->enterNode(childnode, "external"); if(childnode1) Mercury::g_extReceiveWindowMessagesOverflow = KBE_MAX(16, xml->getValInt(childnode1)); } childnode1 = xml->enterNode(childnode, "bytes"); if(childnode1) { childnode1 = xml->enterNode(childnode, "internal"); if(childnode1) Mercury::g_intReceiveWindowBytesOverflow = KBE_MAX(16, xml->getValInt(childnode1)); childnode1 = xml->enterNode(childnode, "external"); if(childnode1) Mercury::g_extReceiveWindowBytesOverflow = KBE_MAX(16, xml->getValInt(childnode1)); } }; childnode = xml->enterNode(rootNode, "encrypt_type"); if(childnode) { Mercury::g_channelExternalEncryptType = xml->getValInt(childnode); } } rootNode = xml->getRootNode("telnet_service"); if(rootNode != NULL) { TiXmlNode* childnode = xml->enterNode(rootNode, "port"); if(childnode) { telnet_port = xml->getValInt(childnode); } childnode = xml->enterNode(rootNode, "password"); if(childnode) { telnet_passwd = xml->getValStr(childnode); } childnode = xml->enterNode(rootNode, "default_layer"); if(childnode) { telnet_deflayer = xml->getValStr(childnode); } } rootNode = xml->getRootNode("gameUpdateHertz"); if(rootNode != NULL){ gameUpdateHertz_ = xml->getValInt(rootNode); } rootNode = xml->getRootNode("ip"); if(rootNode != NULL) { strcpy(ip_, xml->getValStr(rootNode).c_str()); } rootNode = xml->getRootNode("port"); if(rootNode != NULL){ port_ = xml->getValInt(rootNode); } rootNode = xml->getRootNode("entryScriptFile"); if(rootNode != NULL) { strcpy(entryScriptFile_, xml->getValStr(rootNode).c_str()); } rootNode = xml->getRootNode("accountName"); if(rootNode != NULL) { strcpy(accountName_, xml->getValStr(rootNode).c_str()); } rootNode = xml->getRootNode("useLastAccountName"); if(rootNode != NULL) { useLastAccountName_ = xml->getValStr(rootNode) != "false"; } rootNode = xml->getRootNode("encrypt_login"); if(rootNode != NULL) { encrypt_login_ = xml->getValInt(rootNode); } rootNode = xml->getRootNode("aliasEntityID"); if(rootNode != NULL) { aliasEntityID_ = (xml->getValStr(rootNode) == "true"); } SAFE_RELEASE(xml); return true; }
//------------------------------------------------------------------------------------- bool ServerConfig::loadConfig(std::string fileName) { TiXmlNode* node = NULL, *rootNode = NULL; XmlPlus* xml = new XmlPlus(Resmgr::getSingleton().matchRes(fileName).c_str()); if(!xml->isGood()) { ERROR_MSG(boost::format("ServerConfig::loadConfig: load %1% is failed!\n") % fileName.c_str()); SAFE_RELEASE(xml); return false; } std::string email_service_config; rootNode = xml->getRootNode("email_service_config"); if(rootNode != NULL) { email_service_config = xml->getValStr(rootNode); } rootNode = xml->getRootNode("packetAlwaysContainLength"); if(rootNode != NULL){ Mercury::g_packetAlwaysContainLength = xml->getValInt(rootNode) != 0; } rootNode = xml->getRootNode("trace_packet"); if(rootNode != NULL) { TiXmlNode* childnode = xml->enterNode(rootNode, "debug_type"); if(childnode) Mercury::g_trace_packet = xml->getValInt(childnode); if(Mercury::g_trace_packet > 3) Mercury::g_trace_packet = 0; childnode = xml->enterNode(rootNode, "use_logfile"); if(childnode) Mercury::g_trace_packet_use_logfile = (xml->getValStr(childnode) == "true"); childnode = xml->enterNode(rootNode, "disables"); if(childnode) { do { if(childnode->FirstChild() != NULL) { std::string c = childnode->FirstChild()->Value(); c = strutil::kbe_trim(c); if(c.size() > 0) { Mercury::g_trace_packet_disables.push_back(c); } } }while((childnode = childnode->NextSibling())); } } rootNode = xml->getRootNode("debugEntity"); if(rootNode != NULL) { g_debugEntity = xml->getValInt(rootNode) > 0; } rootNode = xml->getRootNode("app_publish"); if(rootNode != NULL) { g_appPublish = xml->getValInt(rootNode); } rootNode = xml->getRootNode("shutdown_time"); if(rootNode != NULL) { shutdown_time_ = float(xml->getValFloat(rootNode)); } rootNode = xml->getRootNode("shutdown_waittick"); if(rootNode != NULL) { shutdown_waitTickTime_ = float(xml->getValFloat(rootNode)); } rootNode = xml->getRootNode("callback_timeout"); if(rootNode != NULL) { callback_timeout_ = float(xml->getValFloat(rootNode)); if(callback_timeout_ < 5.f) callback_timeout_ = 5.f; } rootNode = xml->getRootNode("thread_pool"); if(rootNode != NULL) { TiXmlNode* childnode = xml->enterNode(rootNode, "timeout"); if(childnode) { thread_timeout_ = float(KBE_MAX(1.0, xml->getValFloat(childnode))); } childnode = xml->enterNode(rootNode, "init_create"); if(childnode) { thread_init_create_ = KBE_MAX(1, xml->getValInt(childnode)); } childnode = xml->enterNode(rootNode, "pre_create"); if(childnode) { thread_pre_create_ = KBE_MAX(1, xml->getValInt(childnode)); } childnode = xml->enterNode(rootNode, "max_create"); if(childnode) { thread_max_create_ = KBE_MAX(1, xml->getValInt(childnode)); } } rootNode = xml->getRootNode("channelCommon"); if(rootNode != NULL) { TiXmlNode* childnode = xml->enterNode(rootNode, "timeout"); if(childnode) { TiXmlNode* childnode1 = xml->enterNode(childnode, "internal"); if(childnode1) { channelCommon_.channelInternalTimeout = KBE_MAX(1.f, float(xml->getValFloat(childnode1))); Mercury::g_channelInternalTimeout = channelCommon_.channelInternalTimeout; } childnode1 = xml->enterNode(childnode, "external"); if(childnode) { channelCommon_.channelExternalTimeout = KBE_MAX(1.f, float(xml->getValFloat(childnode1))); Mercury::g_channelExternalTimeout = channelCommon_.channelExternalTimeout; } } childnode = xml->enterNode(rootNode, "readBufferSize"); if(childnode) { TiXmlNode* childnode1 = xml->enterNode(childnode, "internal"); if(childnode1) channelCommon_.intReadBufferSize = KBE_MAX(0, xml->getValInt(childnode1)); childnode1 = xml->enterNode(childnode, "external"); if(childnode1) channelCommon_.extReadBufferSize = KBE_MAX(0, xml->getValInt(childnode1)); } childnode = xml->enterNode(rootNode, "writeBufferSize"); if(childnode) { TiXmlNode* childnode1 = xml->enterNode(childnode, "internal"); if(childnode1) channelCommon_.intWriteBufferSize = KBE_MAX(0, xml->getValInt(childnode1)); childnode1 = xml->enterNode(childnode, "external"); if(childnode1) channelCommon_.extWriteBufferSize = KBE_MAX(0, xml->getValInt(childnode1)); } childnode = xml->enterNode(rootNode, "receiveWindowOverflow"); if(childnode) { TiXmlNode* childnode1 = xml->enterNode(childnode, "messages"); if(childnode1) { TiXmlNode* childnode2 = xml->enterNode(childnode1, "internal"); if(childnode2) Mercury::g_intReceiveWindowMessagesOverflow = KBE_MAX(0, xml->getValInt(childnode2)); childnode2 = xml->enterNode(childnode1, "external"); if(childnode2) Mercury::g_extReceiveWindowMessagesOverflow = KBE_MAX(0, xml->getValInt(childnode2)); childnode2 = xml->enterNode(childnode1, "critical"); if(childnode2) Mercury::g_receiveWindowMessagesOverflowCritical = KBE_MAX(0, xml->getValInt(childnode2)); } childnode1 = xml->enterNode(childnode, "bytes"); if(childnode1) { TiXmlNode* childnode2 = xml->enterNode(childnode1, "internal"); if(childnode2) Mercury::g_intReceiveWindowBytesOverflow = KBE_MAX(0, xml->getValInt(childnode2)); childnode2 = xml->enterNode(childnode1, "external"); if(childnode2) Mercury::g_extReceiveWindowBytesOverflow = KBE_MAX(0, xml->getValInt(childnode2)); } }; childnode = xml->enterNode(rootNode, "encrypt_type"); if(childnode) { Mercury::g_channelExternalEncryptType = xml->getValInt(childnode); } } rootNode = xml->getRootNode("gameUpdateHertz"); if(rootNode != NULL){ gameUpdateHertz_ = xml->getValInt(rootNode); } rootNode = xml->getRootNode("bitsPerSecondToClient"); if(rootNode != NULL){ bitsPerSecondToClient_ = xml->getValInt(rootNode); } rootNode = xml->getRootNode("billingSystem"); if(rootNode != NULL) { TiXmlNode* childnode = xml->enterNode(rootNode, "accountType"); if(childnode) { billingSystem_accountType_ = xml->getValStr(childnode); if(billingSystem_accountType_.size() == 0) billingSystem_accountType_ = "normal"; } childnode = xml->enterNode(rootNode, "chargeType"); if(childnode) { billingSystem_chargeType_ = xml->getValStr(childnode); if(billingSystem_chargeType_.size() == 0) billingSystem_chargeType_ = "normal"; } std::string ip = ""; childnode = xml->enterNode(rootNode, "host"); if(childnode) { ip = xml->getValStr(childnode); if(ip.size() == 0) ip = "localhost"; Mercury::Address addr(ip, ntohs(billingSystemAddr_.port)); billingSystemAddr_ = addr; } uint16 port = 0; childnode = xml->enterNode(rootNode, "port"); if(childnode) { port = xml->getValInt(childnode); if(port <= 0) port = KBE_BILLING_TCP_PORT; Mercury::Address addr(inet_ntoa((struct in_addr&)billingSystemAddr_.ip), port); billingSystemAddr_ = addr; } childnode = xml->enterNode(rootNode, "thirdpartyAccountService_addr"); if(childnode) { billingSystem_thirdpartyAccountServiceAddr_ = xml->getValStr(childnode); } childnode = xml->enterNode(rootNode, "thirdpartyAccountService_port"); if(childnode) { billingSystem_thirdpartyAccountServicePort_ = xml->getValInt(childnode); } childnode = xml->enterNode(rootNode, "thirdpartyChargeService_addr"); if(childnode) { billingSystem_thirdpartyChargeServiceAddr_ = xml->getValStr(childnode); } childnode = xml->enterNode(rootNode, "thirdpartyChargeService_port"); if(childnode) { billingSystem_thirdpartyChargeServicePort_ = xml->getValInt(childnode); } childnode = xml->enterNode(rootNode, "thirdpartyService_cbport"); if(childnode) { billingSystem_thirdpartyServiceCBPort_ = xml->getValInt(childnode); } node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _billingInfo.tcp_SOMAXCONN = xml->getValInt(node); } node = xml->enterNode(rootNode, "orders_timeout"); if(node != NULL){ billingSystem_orders_timeout_ = xml->getValInt(node); } } rootNode = xml->getRootNode("cellapp"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_cellAppInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "entryScriptFile"); if(node != NULL) strncpy((char*)&_cellAppInfo.entryScriptFile, xml->getValStr(node).c_str(), MAX_NAME); TiXmlNode* aoiNode = xml->enterNode(rootNode, "defaultAoIRadius"); if(aoiNode != NULL) { node = NULL; node = xml->enterNode(aoiNode, "radius"); if(node != NULL) _cellAppInfo.defaultAoIRadius = float(xml->getValFloat(node)); node = xml->enterNode(aoiNode, "hysteresisArea"); if(node != NULL) _cellAppInfo.defaultAoIHysteresisArea = float(xml->getValFloat(node)); } node = xml->enterNode(rootNode, "ids"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "criticallyLowSize"); if(childnode) { _cellAppInfo.criticallyLowSize = xml->getValInt(childnode); if(_cellAppInfo.criticallyLowSize < 100) _cellAppInfo.criticallyLowSize = 100; } } node = xml->enterNode(rootNode, "profiles"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "cprofile"); if(childnode) { _cellAppInfo.profiles.open_cprofile = (xml->getValStr(childnode) == "true"); } childnode = xml->enterNode(node, "pyprofile"); if(childnode) { _cellAppInfo.profiles.open_pyprofile = (xml->getValStr(childnode) == "true"); } childnode = xml->enterNode(node, "eventprofile"); if(childnode) { _cellAppInfo.profiles.open_eventprofile = (xml->getValStr(childnode) == "true"); } childnode = xml->enterNode(node, "mercuryprofile"); if(childnode) { _cellAppInfo.profiles.open_mercuryprofile = (xml->getValStr(childnode) == "true"); } } node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _cellAppInfo.tcp_SOMAXCONN = xml->getValInt(node); } node = xml->enterNode(rootNode, "ghostDistance"); if(node != NULL){ _cellAppInfo.ghostDistance = (float)xml->getValFloat(node); } node = xml->enterNode(rootNode, "ghostingMaxPerCheck"); if(node != NULL){ _cellAppInfo.ghostingMaxPerCheck = xml->getValInt(node); } node = xml->enterNode(rootNode, "ghostUpdateHertz"); if(node != NULL){ _cellAppInfo.ghostUpdateHertz = xml->getValInt(node); } node = xml->enterNode(rootNode, "coordinate_system"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "enable"); if(childnode) { _cellAppInfo.use_coordinate_system = (xml->getValStr(childnode) == "true"); } childnode = xml->enterNode(node, "rangemgr_y"); if(childnode) { _cellAppInfo.rangelist_hasY = (xml->getValStr(childnode) == "true"); } } node = xml->enterNode(rootNode, "telnet_service"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "port"); if(childnode) { _cellAppInfo.telnet_port = xml->getValInt(childnode); } childnode = xml->enterNode(node, "password"); if(childnode) { _cellAppInfo.telnet_passwd = xml->getValStr(childnode); } childnode = xml->enterNode(node, "default_layer"); if(childnode) { _cellAppInfo.telnet_deflayer = xml->getValStr(childnode); } } node = xml->enterNode(rootNode, "shutdown"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "perSecsDestroyEntitySize"); if(childnode) { _cellAppInfo.perSecsDestroyEntitySize = uint32(xml->getValInt(childnode)); } } } rootNode = xml->getRootNode("baseapp"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "entryScriptFile"); if(node != NULL) strncpy((char*)&_baseAppInfo.entryScriptFile, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_baseAppInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "externalInterface"); if(node != NULL) strncpy((char*)&_baseAppInfo.externalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "externalPorts_min"); if(node != NULL) _baseAppInfo.externalPorts_min = xml->getValInt(node); node = xml->enterNode(rootNode, "externalPorts_max"); if(node != NULL) _baseAppInfo.externalPorts_max = xml->getValInt(node); if(_baseAppInfo.externalPorts_min < 0) _baseAppInfo.externalPorts_min = 0; if(_baseAppInfo.externalPorts_max < _baseAppInfo.externalPorts_min) _baseAppInfo.externalPorts_max = _baseAppInfo.externalPorts_min; node = xml->enterNode(rootNode, "archivePeriod"); if(node != NULL) _baseAppInfo.archivePeriod = float(xml->getValFloat(node)); node = xml->enterNode(rootNode, "backupPeriod"); if(node != NULL) _baseAppInfo.backupPeriod = float(xml->getValFloat(node)); node = xml->enterNode(rootNode, "backUpUndefinedProperties"); if(node != NULL) _baseAppInfo.backUpUndefinedProperties = xml->getValInt(node) > 0; node = xml->enterNode(rootNode, "loadSmoothingBias"); if(node != NULL) _baseAppInfo.loadSmoothingBias = float(xml->getValFloat(node)); node = xml->enterNode(rootNode, "ids"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "criticallyLowSize"); if(childnode) { _baseAppInfo.criticallyLowSize = xml->getValInt(childnode); if(_baseAppInfo.criticallyLowSize < 100) _baseAppInfo.criticallyLowSize = 100; } } node = xml->enterNode(rootNode, "downloadStreaming"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "bitsPerSecondTotal"); if(childnode) _baseAppInfo.downloadBitsPerSecondTotal = xml->getValInt(childnode); childnode = xml->enterNode(node, "bitsPerSecondPerClient"); if(childnode) _baseAppInfo.downloadBitsPerSecondPerClient = xml->getValInt(childnode); } node = xml->enterNode(rootNode, "profiles"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "cprofile"); if(childnode) { _baseAppInfo.profiles.open_cprofile = (xml->getValStr(childnode) == "true"); } childnode = xml->enterNode(node, "pyprofile"); if(childnode) { _baseAppInfo.profiles.open_pyprofile = (xml->getValStr(childnode) == "true"); } childnode = xml->enterNode(node, "eventprofile"); if(childnode) { _baseAppInfo.profiles.open_eventprofile = (xml->getValStr(childnode) == "true"); } childnode = xml->enterNode(node, "mercuryprofile"); if(childnode) { _baseAppInfo.profiles.open_mercuryprofile = (xml->getValStr(childnode) == "true"); } } node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _baseAppInfo.tcp_SOMAXCONN = xml->getValInt(node); } node = xml->enterNode(rootNode, "entityRestoreSize"); if(node != NULL){ _baseAppInfo.entityRestoreSize = xml->getValInt(node); } if(_baseAppInfo.entityRestoreSize <= 0) _baseAppInfo.entityRestoreSize = 32; node = xml->enterNode(rootNode, "telnet_service"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "port"); if(childnode) { _baseAppInfo.telnet_port = xml->getValInt(childnode); } childnode = xml->enterNode(node, "password"); if(childnode) { _baseAppInfo.telnet_passwd = xml->getValStr(childnode); } childnode = xml->enterNode(node, "default_layer"); if(childnode) { _baseAppInfo.telnet_deflayer = xml->getValStr(childnode); } } node = xml->enterNode(rootNode, "shutdown"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "perSecsDestroyEntitySize"); if(childnode) { _baseAppInfo.perSecsDestroyEntitySize = uint32(xml->getValInt(childnode)); } } node = xml->enterNode(rootNode, "respool"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "buffer_size"); if(childnode) _baseAppInfo.respool_buffersize = xml->getValInt(childnode); childnode = xml->enterNode(node, "timeout"); if(childnode) _baseAppInfo.respool_timeout = uint64(xml->getValInt(childnode)); childnode = xml->enterNode(node, "checktick"); if(childnode) Resmgr::respool_checktick = xml->getValInt(childnode); Resmgr::respool_timeout = _baseAppInfo.respool_timeout; Resmgr::respool_buffersize = _baseAppInfo.respool_buffersize; } } rootNode = xml->getRootNode("dbmgr"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_dbmgrInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "dbAccountEntityScriptType"); if(node != NULL) strncpy((char*)&_dbmgrInfo.dbAccountEntityScriptType, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "type"); if(node != NULL) strncpy((char*)&_dbmgrInfo.db_type, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "host"); if(node != NULL) strncpy((char*)&_dbmgrInfo.db_ip, xml->getValStr(node).c_str(), MAX_IP); node = xml->enterNode(rootNode, "port"); if(node != NULL) _dbmgrInfo.db_port = xml->getValInt(node); node = xml->enterNode(rootNode, "auth"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "password"); if(childnode) { strncpy((char*)&_dbmgrInfo.db_password, xml->getValStr(childnode).c_str(), MAX_BUF * 10); } childnode = xml->enterNode(node, "username"); if(childnode) { strncpy((char*)&_dbmgrInfo.db_username, xml->getValStr(childnode).c_str(), MAX_NAME); } childnode = xml->enterNode(node, "encrypt"); if(childnode) { _dbmgrInfo.db_passwordEncrypt = xml->getValStr(childnode) == "true"; } } node = xml->enterNode(rootNode, "databaseName"); if(node != NULL) strncpy((char*)&_dbmgrInfo.db_name, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "numConnections"); if(node != NULL) _dbmgrInfo.db_numConnections = xml->getValInt(node); node = xml->enterNode(rootNode, "unicodeString"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "characterSet"); if(childnode) { _dbmgrInfo.db_unicodeString_characterSet = xml->getValStr(childnode); } childnode = xml->enterNode(node, "collation"); if(childnode) { _dbmgrInfo.db_unicodeString_collation = xml->getValStr(childnode); } } node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _dbmgrInfo.tcp_SOMAXCONN = xml->getValInt(node); } node = xml->enterNode(rootNode, "notFoundAccountAutoCreate"); if(node != NULL){ _dbmgrInfo.notFoundAccountAutoCreate = (xml->getValStr(node) == "true"); } node = xml->enterNode(rootNode, "allowEmptyDigest"); if(node != NULL){ _dbmgrInfo.allowEmptyDigest = (xml->getValStr(node) == "true"); } node = xml->enterNode(rootNode, "accountDefaultFlags"); if(node != NULL) _dbmgrInfo.accountDefaultFlags = xml->getValInt(node); node = xml->enterNode(rootNode, "accountDefaultDeadline"); if(node != NULL) _dbmgrInfo.accountDefaultDeadline = xml->getValInt(node); } if(_dbmgrInfo.db_unicodeString_characterSet.size() == 0) _dbmgrInfo.db_unicodeString_characterSet = "utf8"; if(_dbmgrInfo.db_unicodeString_collation.size() == 0) _dbmgrInfo.db_unicodeString_collation = "utf8_bin"; rootNode = xml->getRootNode("loginapp"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_loginAppInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "externalInterface"); if(node != NULL) strncpy((char*)&_loginAppInfo.externalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "externalPorts_min"); if(node != NULL) _loginAppInfo.externalPorts_min = xml->getValInt(node); node = xml->enterNode(rootNode, "externalPorts_max"); if(node != NULL) _loginAppInfo.externalPorts_max = xml->getValInt(node); if(_loginAppInfo.externalPorts_min < 0) _loginAppInfo.externalPorts_min = 0; if(_loginAppInfo.externalPorts_max < _loginAppInfo.externalPorts_min) _loginAppInfo.externalPorts_max = _loginAppInfo.externalPorts_min; node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _loginAppInfo.tcp_SOMAXCONN = xml->getValInt(node); } node = xml->enterNode(rootNode, "encrypt_login"); if(node != NULL){ _loginAppInfo.encrypt_login = xml->getValInt(node); } node = xml->enterNode(rootNode, "account_type"); if(node != NULL){ _loginAppInfo.account_type = xml->getValInt(node); } node = xml->enterNode(rootNode, "http_cbhost"); if(node) _loginAppInfo.http_cbhost = xml->getValStr(node); node = xml->enterNode(rootNode, "http_cbport"); if(node) _loginAppInfo.http_cbport = xml->getValInt(node); } rootNode = xml->getRootNode("cellappmgr"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_cellAppMgrInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _cellAppMgrInfo.tcp_SOMAXCONN = xml->getValInt(node); } } rootNode = xml->getRootNode("baseappmgr"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_baseAppMgrInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _baseAppMgrInfo.tcp_SOMAXCONN = xml->getValInt(node); } } rootNode = xml->getRootNode("kbmachine"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_kbMachineInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "externalInterface"); if(node != NULL) strncpy((char*)&_kbMachineInfo.externalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "externalPorts_min"); if(node != NULL) _kbMachineInfo.externalPorts_min = xml->getValInt(node); node = xml->enterNode(rootNode, "externalPorts_max"); if(node != NULL) _kbMachineInfo.externalPorts_max = xml->getValInt(node); if(_kbMachineInfo.externalPorts_min < 0) _kbMachineInfo.externalPorts_min = 0; if(_kbMachineInfo.externalPorts_max < _kbMachineInfo.externalPorts_min) _kbMachineInfo.externalPorts_max = _kbMachineInfo.externalPorts_min; node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _kbMachineInfo.tcp_SOMAXCONN = xml->getValInt(node); } } rootNode = xml->getRootNode("kbcenter"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "internalInterface"); if(node != NULL) strncpy((char*)&_kbCenterInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _kbCenterInfo.tcp_SOMAXCONN = xml->getValInt(node); } } rootNode = xml->getRootNode("bots"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "bots"); if(node != NULL) strncpy((char*)&_botsInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "host"); if(node != NULL) strncpy((char*)&_botsInfo.login_ip, xml->getValStr(node).c_str(), MAX_IP); node = xml->enterNode(rootNode, "port"); if(node != NULL) _botsInfo.login_port = xml->getValInt(node); node = xml->enterNode(rootNode, "defaultAddBots"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "totalcount"); if(childnode) { _botsInfo.defaultAddBots_totalCount = xml->getValInt(childnode); } childnode = xml->enterNode(node, "tickcount"); if(childnode) { _botsInfo.defaultAddBots_tickCount = xml->getValInt(childnode); } childnode = xml->enterNode(node, "ticktime"); if(childnode) { _botsInfo.defaultAddBots_tickTime = (float)xml->getValFloat(childnode); } } node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _botsInfo.tcp_SOMAXCONN = xml->getValInt(node); } } rootNode = xml->getRootNode("messagelog"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "messagelog"); if(node != NULL) strncpy((char*)&_messagelogInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _messagelogInfo.tcp_SOMAXCONN = xml->getValInt(node); } } rootNode = xml->getRootNode("resourcemgr"); if(rootNode != NULL) { node = xml->enterNode(rootNode, "resourcemgr"); if(node != NULL) strncpy((char*)&_resourcemgrInfo.internalInterface, xml->getValStr(node).c_str(), MAX_NAME); node = xml->enterNode(rootNode, "SOMAXCONN"); if(node != NULL){ _resourcemgrInfo.tcp_SOMAXCONN = xml->getValInt(node); } node = xml->enterNode(rootNode, "respool"); if(node != NULL) { TiXmlNode* childnode = xml->enterNode(node, "buffer_size"); if(childnode) _resourcemgrInfo.respool_buffersize = xml->getValInt(childnode); childnode = xml->enterNode(node, "timeout"); if(childnode) _resourcemgrInfo.respool_timeout = uint64(xml->getValInt(childnode)); childnode = xml->enterNode(node, "checktick"); if(childnode) Resmgr::respool_checktick = xml->getValInt(childnode); Resmgr::respool_timeout = _resourcemgrInfo.respool_timeout; Resmgr::respool_buffersize = _resourcemgrInfo.respool_buffersize; } } SAFE_RELEASE(xml); if(email_service_config.size() > 0) { xml = new XmlPlus(Resmgr::getSingleton().matchRes(email_service_config).c_str()); if(!xml->isGood()) { ERROR_MSG(boost::format("ServerConfig::loadConfig: load %1% is failed!\n") % email_service_config.c_str()); SAFE_RELEASE(xml); return false; } TiXmlNode* childnode = xml->getRootNode("smtp_server"); if(childnode) emailServerInfo_.smtp_server = xml->getValStr(childnode); childnode = xml->getRootNode("smtp_port"); if(childnode) emailServerInfo_.smtp_port = xml->getValInt(childnode); childnode = xml->getRootNode("username"); if(childnode) emailServerInfo_.username = xml->getValStr(childnode); childnode = xml->getRootNode("password"); if(childnode) emailServerInfo_.password = xml->getValStr(childnode); childnode = xml->getRootNode("smtp_auth"); if(childnode) emailServerInfo_.smtp_auth = xml->getValInt(childnode); TiXmlNode* rootNode1 = xml->getRootNode("email_activation"); if(rootNode1 != NULL) { TiXmlNode* childnode1 = xml->enterNode(rootNode1, "subject"); if(childnode1) emailAtivationInfo_.subject = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "message"); if(childnode1) emailAtivationInfo_.message = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "deadline"); if(childnode1) emailAtivationInfo_.deadline = xml->getValInt(childnode1); childnode1 = xml->enterNode(rootNode1, "backlink_success_message"); if(childnode1) emailAtivationInfo_.backlink_success_message = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "backlink_fail_message"); if(childnode1) emailAtivationInfo_.backlink_fail_message = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "backlink_hello_message"); if(childnode1) emailAtivationInfo_.backlink_hello_message = childnode1->ToText()->Value(); } rootNode1 = xml->getRootNode("email_resetpassword"); if(rootNode1 != NULL) { TiXmlNode* childnode1 = xml->enterNode(rootNode1, "subject"); if(childnode1) emailResetPasswordInfo_.subject = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "message"); if(childnode1) emailResetPasswordInfo_.message = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "deadline"); if(childnode1) emailResetPasswordInfo_.deadline = xml->getValInt(childnode1); childnode1 = xml->enterNode(rootNode1, "backlink_success_message"); if(childnode1) emailResetPasswordInfo_.backlink_success_message = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "backlink_fail_message"); if(childnode1) emailResetPasswordInfo_.backlink_fail_message = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "backlink_hello_message"); if(childnode1) emailResetPasswordInfo_.backlink_hello_message = childnode1->ToText()->Value(); } rootNode1 = xml->getRootNode("email_bind"); if(rootNode1 != NULL) { TiXmlNode* childnode1 = xml->enterNode(rootNode1, "subject"); if(childnode1) emailBindInfo_.subject = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "message"); if(childnode1) emailBindInfo_.message = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "deadline"); if(childnode1) emailBindInfo_.deadline = xml->getValInt(childnode1); childnode1 = xml->enterNode(rootNode1, "backlink_success_message"); if(childnode1) emailBindInfo_.backlink_success_message = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "backlink_fail_message"); if(childnode1) emailBindInfo_.backlink_fail_message = childnode1->ToText()->Value(); childnode1 = xml->enterNode(rootNode1, "backlink_hello_message"); if(childnode1) emailBindInfo_.backlink_hello_message = childnode1->ToText()->Value(); } } SAFE_RELEASE(xml); return true; }
//------------------------------------------------------------------------------------- bool DataTypes::loadAlias(std::string& file) { TiXmlNode* node = NULL; XmlPlus* xml = new XmlPlus(Resmgr::getSingleton().matchRes(file).c_str()); if(xml == NULL || !xml->isGood()) return false; node = xml->getRootNode(); if(node == NULL) { ERROR_MSG("DataTypes::loadAlias: not found node<root->firstChildNode> !\n"); return false; } XML_FOR_BEGIN(node) { std::string type = ""; std::string aliasName = xml->getKey(node); TiXmlNode* childNode = node->FirstChild(); if(childNode != NULL) { type = xml->getValStr(childNode); if(type == "FIXED_DICT") { FixedDictType* fixedDict = new FixedDictType; if(fixedDict->initialize(xml, childNode)) { addDateType(aliasName, fixedDict); } else { ERROR_MSG(boost::format("DataTypes::loadAlias:parse FIXED_DICT [%1%] is error!\n") % aliasName.c_str()); delete fixedDict; return false; } } else if(type == "ARRAY") { FixedArrayType* fixedArray = new FixedArrayType; if(fixedArray->initialize(xml, childNode)) { addDateType(aliasName, fixedArray); } else { ERROR_MSG(boost::format("DataTypes::loadAlias:parse ARRAY [%1%] is error!\n") % aliasName.c_str()); delete fixedArray; return false; } } else { DataType* dataType = getDataType(type); if(dataType == NULL) { ERROR_MSG(boost::format("DataTypes::loadAlias:can't fount type %1% by alias[%2%].\n") % type.c_str() % aliasName.c_str()); return false; } addDateType(aliasName, dataType); } } } XML_FOR_END(node); delete xml; return true; }