void ServerBrowser::completeDownloadServerList() { QTextStream stream(reply); parseServerList(&stream); if (!currentItem()) { selectBestItem(); } }
int argHandler(struct cmd_syndesc *as, void *arock) { /* globalConfPtr provides the handle for the configuration information */ /* database directory */ if (as->parms[0].items != 0) { globalConfPtr->databaseDirectory = strdup(as->parms[0].items->data); if (globalConfPtr->databaseDirectory == 0) BUDB_EXIT(-1); } /* -cellservdb, cell configuration directory */ if (as->parms[1].items != 0) { globalConfPtr->cellConfigdir = strdup(as->parms[1].items->data); if (globalConfPtr->cellConfigdir == 0) BUDB_EXIT(-1); globalConfPtr->debugFlags |= DF_RECHECKNOAUTH; } /* truncate the database */ if (as->parms[2].items != 0) truncateDatabase(); /* run without authentication */ if (as->parms[3].items != 0) globalConfPtr->debugFlags |= DF_NOAUTH; /* use small hash tables */ if (as->parms[4].items != 0) globalConfPtr->debugFlags |= DF_SMALLHT; /* user provided list of ubik database servers */ if (as->parms[5].items != 0) parseServerList(as->parms[5].items); /* user provided the number of ubik buffers */ if (as->parms[6].items != 0) ubik_nBuffers = atoi(as->parms[6].items->data); else ubik_nBuffers = 0; /* param 7 (-auditlog) handled below */ /* user provided the number of threads */ if (as->parms[8].items != 0) { lwps = atoi(as->parms[8].items->data); if (lwps > MAXLWP) { printf ("Warning: '-p %d' is too big; using %d instead\n", lwps, MAXLWP); lwps = MAXLWP; } if (lwps < MINLWP) { printf ("Warning: '-p %d' is too small; using %d instead\n", lwps, MINLWP); lwps = MINLWP; } } /* user provided rxbind option */ if (as->parms[9].items != 0) { rxBind = 1; } /* -audit-interface */ if (as->parms[10].items != 0) { char *interface = as->parms[10].items->data; if (osi_audit_interface(interface)) { printf("Invalid audit interface '%s'\n", interface); BUDB_EXIT(-1); } } /* -auditlog */ /* needs to be after -audit-interface, so we osi_audit_interface * before we osi_audit_file */ if (as->parms[7].items != 0) { char *fileName = as->parms[7].items->data; osi_audit_file(fileName); } return 0; }
bool GameConfig::parseGameConfig(char *pBuffer, unsigned long nSize) //解析数据流 { m_regionInfos.clear(); m_tableConfigs.clear(); m_goodInfos.clear(); m_servers.m_shardVec.clear(); m_resVersion.clear(); m_vipInfos.clear(); m_mysShops.clear(); m_switchs.clear(); xmlDocPtr pdoc = NULL; xmlNodePtr proot = NULL; xmlNodePtr curNode = NULL; m_gameConfig = string(pBuffer, nSize); pdoc = xmlParseMemory ((char*)pBuffer, nSize); if (pdoc == NULL) { return false; } // 获取 xml 文档对象的根节对象 proot = xmlDocGetRootElement (pdoc); if (proot == NULL) { return false; } curNode = proot->xmlChildrenNode; if (!curNode) { return false; } while (curNode != NULL) { if (xmlStrcmp(curNode->name, BAD_CAST "webs")==0) { parseWebs(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "regions")==0) { parseRegions(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "goods")==0) { parseGoods(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "scenes")==0) { parseScenes(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "servers")==0) { parseServerList(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "givecoins")==0) { parseGaveCoin(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "resources")==0) { parseResVersion(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "vips")==0) { parseVip(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "mysshop")==0) { parseMysShop(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "switchs")==0) { parseSwitchs(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "Languages")==0) { parseLanguages(curNode); } else if (xmlStrcmp(curNode->name, BAD_CAST "commondatas")==0) { parseCommonData(curNode); } curNode = curNode->next; } /* 关闭和清理 */ xmlFreeDoc(pdoc); xmlCleanupParser(); return true; }