Пример #1
0
void ServerBrowser::completeDownloadServerList()
{
  QTextStream stream(reply);

  parseServerList(&stream);

  if (!currentItem()) {
    selectBestItem();
  }
}
Пример #2
0
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;
}
Пример #3
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;
}