Пример #1
0
CMarkup* ScutDataLogic::CXmlDataHandler::ParseMarkupData( CStream& dataStream )
{
	int nSize = dataStream.GetSize();
	if (nSize == 0)
	{
		return NULL;
	}
    
	CMarkup* pMarkup = new CMarkup();
	char* pBuffer = new char[nSize + 1];
	dataStream.SetPosition(0);
    
	if (dataStream.ReadBuffer(pBuffer, nSize))
	{
		pBuffer[nSize] = '\0';
#ifdef WIN32
		if (pMarkup->DetectUTF8(pBuffer, nSize))
		{
			std::string temp = pMarkup->UTF8ToA(pBuffer);
            //std::string temp = utf8ToGB2312(pBuffer, nSize);
			pMarkup->SetDoc(temp.c_str());
		}	
		else
			pMarkup->SetDoc(pBuffer, nSize);
#else
		pMarkup->SetDoc(pBuffer, nSize);
#endif        		
	}
	delete []pBuffer;
	return pMarkup;
}
Пример #2
0
void CRequestXmlMessage::packedSendMessage(NetMessage& netMessage)
{
	CMarkup xml;
	xml.SetDoc("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");
	xml.AddElem("Message");
	xml.AddChildElem("Header");
	xml.IntoElem();
	xml.AddAttrib("MsgType", "EMSG_REQUESTXML_RSP");
	xml.OutOfElem();
	xml.AddChildElem("Result");
	xml.IntoElem();
	xml.AddAttrib("ErrorCode", 0);
	xml.AddAttrib("Value", QString::fromLocal8Bit("成功").toStdString().c_str());
	xml.OutOfElem();
	xml.AddChildElem("SvrInfo");
	xml.IntoElem();
	xml.AddAttrib("UpdateXmlUrl", MessageDataMediator->m_strUpdateXMLUrl.toStdString().c_str());
	xml.AddAttrib("HelpInfoXmlUrl", MessageDataMediator->m_strHelpXMLUrl.toStdString().c_str());
	xml.AddAttrib("VersionCheckFileUrl", MessageDataMediator->m_strClientVersionUrl.toStdString().c_str());
	xml.AddAttrib("TextMode", MessageDataMediator->m_bTextMode ? "1" : "0");
	xml.OutOfElem();

	netMessage.msgBuffer = packXml(&xml);
	netMessage.msgLen = xml.GetDoc().length();
}
Пример #3
0
bool CInstrOffsetData::Save(LPCTSTR filePath) {
	CMarkup xml;
	xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
	xml.AddNode(CMarkup::MNT_ELEMENT, "root");
	xml.IntoElem();

	M2::iterator m2it;

	xml.AddNode(CMarkup::MNT_ELEMENT, "header");
	xml.SetAttrib("version", 1);

	xml.AddNode(CMarkup::MNT_ELEMENT, "data");
	xml.IntoElem();

	for (m2it = m_data.begin(); m2it != m_data.end(); m2it++) {
		CString frequency;
		frequency.Format("%f", m2it->first);
		xml.AddNode(CMarkup::MNT_ELEMENT, "frequency");
		xml.SetAttrib("value", frequency);
		xml.IntoElem();
		M1::iterator m1it;
		for (m1it = m2it->second.begin(); m1it != m2it->second.end(); m1it++) {
			CString dbm, offset;
			dbm.Format("%f", m1it->first);
			offset.Format("%f", m1it->second);
			
			xml.AddNode(CMarkup::MNT_ELEMENT, "power");
			
			xml.SetAttrib("dest_power", dbm);
			xml.SetAttrib("offset", offset);
		}
		xml.OutOfElem();
	}
	return xml.Save(filePath);
}
Пример #4
0
Vehicle::Vehicle(const char * inputXml)
{
   CMarkup xml;
   xml.SetDoc (inputXml);
   xml.FindElem ();
   xml.IntoElem ();

   while (xml.FindElem ()) {
      std::string tag = xml.GetTagName ();
      if (tag == "vtypeidname") {
         vtypeidname_ = xml.GetData();
      }
      else if (tag == "vtypeid") {
         vtypeid_ = atoi (xml.GetData().c_str());
      }
      else if (tag == "color") {
         color_ = xml.GetData();
      }
      else if (tag == "heat") {
         heat_ = atoi (xml.GetData().c_str());
      }
      else if (tag == "location") {
         location_ = atoi (xml.GetData().c_str());
      }
      else if (tag == "myear") {
         myear_ = atoi (xml.GetData().c_str());
      }
      else if (tag == "id") {
         id_ = atoi (xml.GetData().c_str());
      }
   }
}
Пример #5
0
bool CRequestXmlMessage::treatMessage(const NetMessage& netMessage, CMessageFactory* pFactory, SocketContext* clientSocket)
{
	//请求XML时检测客户端ID,如果不存在,执行注册ID流程
	CMarkup xml;
	if(xml.SetDoc(netMessage.msgBuffer))
	{
		if(xml.FindChildElem("Info"))
		{
			xml.IntoElem();
			QString strId = QString::fromStdString(xml.GetAttrib("Id"));
			if(!DataManagerThread->IsClientExist(strId))
			{
				DataMotion dataMotion;
				dataMotion.msg = EMSG_REGISTERID;
				dataMotion.clientInfo.id = strId;
				dataMotion.clientInfo.version = ""; //yhb 版本号暂时不用
				DataManagerThread->AddDataMotion(dataMotion);
			}
		}
	}

	if(NULL != pFactory)
	{
		return pFactory->sendMessage(clientSocket, netMessage.msgHead);
	}

	return true;
}
Пример #6
0
bool CRegisterIdMessage::treatMessage(const NetMessage& netMessage, CNetClt* pNet)
{
	CMarkup xml;
	if(xml.SetDoc(netMessage.msgBuffer))
	{
		int errCode = 0;
		QString errorInfo = "";
		if(checkError(&xml, errCode, errorInfo))
		{
			if(0 != errCode)
			{
				ClientLogger->AddLog(QString::fromLocal8Bit("RegisterId [%1] : \r\n[%2]").arg(errorInfo).arg(netMessage.msgBuffer));
				emit NetClass->m_pMessageEventMediator->sigError(netMessage.msgHead, errorInfo);
				return true;
			}
		}

		emit NetClass->m_pMessageEventMediator->sigRegisterSuccess();
	}
	else
	{
		ClientLogger->AddLog(QString::fromLocal8Bit("RegisterId收到的消息错误, 无法被正确解析 : [%1]").arg(netMessage.msgBuffer));
		emit NetClass->m_pMessageEventMediator->sigError(netMessage.msgHead, QString::fromLocal8Bit("收到的消息错误, 无法被正确解析"));
	}

	return true;
}
Пример #7
0
static int _ParseSegXml(const char *src, 
						const LocationInfo *location, 
						int len, 
						int *extraLoaction,
						int extraLen,
						char *dst)
{
	CMarkup xml;
	xml.SetDoc(src);						
	if (!xml.FindElem("SEGMENTS")){		
		return -1;								
	}										
	xml.IntoElem();						
	if (! xml.FindElem("SEGMENT")){		
		return -1;								
	}										
	xml.IntoElem();
	_doIntersect(location, len, extraLoaction, extraLen);
	while (xml.FindElem("COLUMN"))
	{
		int id = atoi(xml.GetAttrib("ID").c_str());
		if (_isExtra(id, extraLoaction, extraLen)) {
			continue;
		}

		if (!isExist(id, location, len)) {
			xml.RemoveElem();
		}
	}
	xml.OutOfElem();						
	xml.OutOfElem();
	strcpy(dst, xml.GetDoc().c_str());
	return 0;
}
Пример #8
0
BOOL CViewGameDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	m_lstCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	if (m_bViewCmpAllGame)
	{
		m_lstCtrl.InsertColumn(0, "GID",		LVCFMT_LEFT, 80);
		m_lstCtrl.InsertColumn(1, "游戏名",		LVCFMT_LEFT, 140);
		m_lstCtrl.InsertColumn(2, "更新时间",   LVCFMT_LEFT, 150);
	}
	else
	{
		m_lstCtrl.InsertColumn(0, "计算机",		LVCFMT_LEFT, 150);
		m_lstCtrl.InsertColumn(1, "更新时间",   LVCFMT_LEFT, 180);
	}

	std::string ErrInfo;
	CConsoleDlg* pDlg = reinterpret_cast<CConsoleDlg*>(AfxGetMainWnd());	
	if (!pDlg->m_pDbMgr->ViewGameInfo(gid, m_bViewCmpAllGame, ErrInfo))
	{
		AfxMessageBox(ErrInfo.c_str());
		OnCancel();
		return TRUE;
	}
	CMarkup xml;
	xml.SetDoc(ErrInfo);
	if (m_bViewCmpAllGame)
	{
		if (i8desk::IntoXmlNode(xml, "/status/gameLst/"))
		{
			while (xml.FindElem("Task"))
			{
				std::string gid = xml.GetAttrib("gid");
				int nIdx = m_lstCtrl.InsertItem(m_lstCtrl.GetItemCount(), gid.c_str());
				DWORD ver = atoi(xml.GetAttrib("version").c_str());
				m_lstCtrl.SetItemText(nIdx, 1, pDlg->GetNameFromGID(atoi(gid.c_str())).c_str());
				m_lstCtrl.SetItemText(nIdx, 2, i8desk::MakeTimeString(ver).c_str());
			}
		}
	}
	else
	{
		if (i8desk::IntoXmlNode(xml, "/status/ipLst/"))
		{
			while (xml.FindElem("Task"))
			{
				DWORD ip = atoi(xml.GetAttrib("ip").c_str());
				int nIdx = m_lstCtrl.InsertItem(m_lstCtrl.GetItemCount(), i8desk::MakeIpString(ip).c_str());
				DWORD ver = atoi(xml.GetAttrib("version").c_str());
				m_lstCtrl.SetItemText(nIdx, 1, i8desk::MakeTimeString(ver).c_str());
			}
		}
	}

	this->CenterWindow();

	return TRUE;
}
Пример #9
0
Shop::ShopItem::ShopItem(MCD_STR xmlstring, bool only_sell_legal,
                         bool increase_price_with_illegality)
 : price_(0), only_sell_legal_(only_sell_legal),
   increase_price_with_illegality_(increase_price_with_illegality),
   description_defined_(false)
{
   CMarkup xml;
   xml.SetDoc(xmlstring);
   xml.FindElem();
   xml.IntoElem();

   while (xml.FindElem())
   {
      std::string tag = xml.GetTagName();

      if (tag == "class")
      {
         if (xml.GetData() == "WEAPON")
            itemclass_ = WEAPON;
         else if (xml.GetData() == "CLIP")
            itemclass_ = CLIP;
         else if (xml.GetData() == "ARMOR")
            itemclass_ = ARMOR;
         else if (xml.GetData() == "LOOT")
            itemclass_ = LOOT;
      }
      else if (tag == "type")
         itemtypename_ = xml.GetData();
      else if (tag == "description")
      {
         description_ = xml.GetData();
         description_defined_ = true;
      }
      else if (tag == "price")
         price_ = atoi(xml.GetData().c_str());
      else if (tag == "sleeperprice")
	     sleeperprice_ = atoi(xml.GetData().c_str());
	  else if (tag == "letter")
      {
         letter_ = xml.GetData()[0];
         if (97 <= letter_ && letter_ <= 122) //Check it is a letter.
            letter_defined_ = true;
         else if (65 <= letter_ && letter_ <= 90)
         {
            letter_ += 32;
            letter_defined_ = true;
         }
         else if (letter_ == '!') //Allow special character.
            letter_defined_ = true;
      }
   }
}
Пример #10
0
bool TestMarkup::WriteTextFile()
{
	CMarkup markup;
	GKString strDoc(_U("<abc>Gis_Kook</abc>"));
	strDoc+=_U("\n");
	markup.SetDoc(strDoc);
	markup.AddAttrib(_U("map"), 1);
	markup.AddElem(_U("dddd"),_U("dd") );

	markup.WriteTextFile(_U("c:/Test.xml"), markup.GetDoc());

	return TRUE;	
}
Пример #11
0
Item::Item(const std::string& inputXml)
{
   CMarkup xml;
   xml.SetDoc(inputXml);
   xml.FindElem();
   xml.IntoElem();
   while(xml.FindElem())
   {
      std::string tag=xml.GetTagName();
      if(tag=="itemtypename") itemtypename_=xml.GetData();
      else if(tag=="itemtypeid") itemtypeid_=atoi(xml.GetData());
      else if(tag=="number") number_=atoi(xml.GetData());
   }
}
Пример #12
0
LootType::LootType(MCD_STR xmlstring)
 : ItemType(xmlstring), stackable_(true),
   no_quick_fencing_(false), cloth_(false)
{
   CMarkup xml;
   xml.SetDoc(xmlstring);
   xml.FindElem();
   xml.IntoElem();

   while (xml.FindElem()) //Loop over all the elements inside the loottype element.
   {
      std::string element = xml.GetTagName();

      if (element == "stackable")
      {
         int b = stringtobool(xml.GetData());
         if (b == 1)
            stackable_ = true;
         else if (b == 0)
            stackable_ = false;
         /*else
            errorlog << "Invalid boolean value for loot type " << idname
                      << "::stackable: " << xml.GetData() << std::endl;*/
      }
      else if (element == "no_quick_fencing")
      {
         int b = stringtobool(xml.GetData());
         if (b == 1)
            no_quick_fencing_ = true;
         else if (b == 0)
            no_quick_fencing_ = false;
         /*else
            errorlog << "Invalid boolean value for loot type " << idname
                      << "::no_quick_fencing: " << xml.GetData() << std::endl;*/
      }
      else if (element == "cloth")
      {
         int b = stringtobool(xml.GetData());
         if (b == 1)
            cloth_ = true;
         else if (b == 0)
            cloth_ = false;
         /*else
            errorlog << "Invalid boolean value for loot type " << idname
                      << "::cloth: " << xml.GetData() << std::endl;*/
      }
   }
}
Пример #13
0
static int _ParseXml(const char *src, std::map<std::string, std::string> &mapValue)
{
	CMarkup xml;
	xml.SetDoc(src);						
	if (!xml.FindElem("SEGMENTS")){		
		return -1;								
	}
	xml.IntoElem();
	while (xml.FindElem("SEGMENT")){
		std::string szSource = xml.GetAttrib("SOURCE");
		mapValue[szSource] = xml.GetAttrib("VALUE");
	}
	xml.OutOfElem();
	return 0;
	
}
Пример #14
0
Money::Money(const char * inputXml)
 : Item(inputXml)
{
   CMarkup xml;
   xml.SetDoc (inputXml);
   xml.FindElem ();
   xml.IntoElem ();
   
   while (xml.FindElem ())
   {
      std::string tag = xml.GetTagName ();
   
      if (tag == "amount")
         amount_ = atoi(xml.GetData().c_str());
   }
}
Пример #15
0
ClipType::ClipType(MCD_STR xmlstring) : ItemType(xmlstring), ammo_(1)
{
   CMarkup xml;
   xml.SetDoc(xmlstring);
   xml.FindElem();
   xml.IntoElem();

   while(xml.FindElem()) //Loop over all the elements inside the cliptype element.
   {
      std::string element=xml.GetTagName();
      if(element=="ammo")
         ammo_=atoi(xml.GetData());
      /*else
         errorlog << "Unknown element for clip type " << idname() << ": " << element << endl;*/
   }
}
Пример #16
0
Weapon::Weapon(const char * inputXml)
 : Item(inputXml)
{
   CMarkup xml;
   xml.SetDoc (inputXml);
   xml.FindElem ();
   xml.IntoElem ();
   
   while (xml.FindElem ())
   {
      std::string tag = xml.GetTagName ();
      
      if (tag == "loaded_cliptype")
         loaded_cliptype_ = xml.GetData();
      else if (tag == "ammo")
         ammo_ = atoi(xml.GetData().c_str());
   }
}
Пример #17
0
bool CRegisterIdMessage::packedSendMessage(NetMessage& netMessage)
{
	CMarkup xml;
	xml.SetDoc("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");
	xml.AddElem("Message");
	xml.AddChildElem("Header");
	xml.IntoElem();
	xml.AddAttrib("MsgType", "EMSG_REGISTERID_REQ");
	xml.OutOfElem();
	xml.AddChildElem("Info");
	xml.IntoElem();
	xml.AddAttrib("Id", MessageDataMediator->m_strNewId.toStdString().c_str());
	//xml.AddAttrib("Id", "23423");
	xml.OutOfElem();

	netMessage.msgBuffer = packXml(&xml);
	netMessage.msgLen = xml.GetDoc().length();
	return true;
}
bool VectorOfFloatComplexType::ParseXMLInstance(const std::string& instance)
{ 
	CMarkup parser;
	parser.SetDoc(instance);
	parser.ResetPos();
	parser.FindElem();
	if(parser.GetTagName()!=name)
		return false;
	parser.IntoElem();	
	while(parser.FindElem())
	{
		std::string str=parser.GetTagName();
		std::string val=parser.GetSubDoc();
		Float* value_item=new Float(str);
		value_item->ParseXMLInstance(val);
		elements[0].AddValue(value_item);
	}
	return true;
}
Пример #19
0
void db_leos::DownloadLyrics(window_config *wcfg, lyric_data* data)
{
  data->Text = _T("");
  tstring xmltext;

  if (!ReadInternetTextFromUrl(xmltext, _T("FOO_UIE_LYRICS2"), data->Source, wcfg->cfg_timeout, wcfg))
    return ;

  tstring info_text;

  CMarkup xml;

  if (!xml.SetDoc(xmltext.c_str()))
    return ;

  if (xml.FindChildElem(_T("lyric")))
  {
    xml.IntoElem();

    if (xml.FindChildElem(_T("text")))
    {
      xml.IntoElem();

      info_text = xml.GetData();

      xml.OutOfElem();
    }

    xml.OutOfElem();
  }

  data->Text = info_text;

  data->Text = ReplaceString(_T("\r"), _T(""), data->Text);
  data->Text = ReplaceString(_T("\n"), _T("\r\n"), data->Text);
  data->IsLoaded = true;

  if (data->Text.find(_T("[")) != tstring::npos)
    data->IsTimestamped = true;
  else
    data->IsTimestamped = false;

}
Пример #20
0
/* Used by load() to create items of the correct class. */
Item* create_item(const std::string& inputXml)
{
   Item* it = NULL;
   CMarkup xml;
   xml.SetDoc(inputXml);
   xml.FindElem();
   string itemclass = xml.GetTagName();
   if (itemclass == "clip")
      it = new Clip(inputXml);
   else if (itemclass == "weapon")
      it = new Weapon(inputXml);
   else if (itemclass == "armor")
      it = new Armor(inputXml);
   else if (itemclass == "loot")
      it = new Loot(inputXml);
   else if (itemclass == "money")
      it = new Money(inputXml);

   return it;
}
Пример #21
0
bool
ESDBXMLResponse::ParseXMLString(CString sXML, ESDBXMLRequestMan* pReqMan){
	CMarkup xmlDoc;
	if( !xmlDoc.SetDoc(sXML) )
		return false;

	if( !xmlDoc.FindElem() )
		return false;

	StringToIntArray*	pReqTypes	= ESDBXMLRequest::GetRequestTypes();
 	RequestType			reqType		= (RequestType)pReqTypes->GetValue(xmlDoc.GetTagName());
	if( reqType == RequestType::db_unknown )
		return false;

	if( !xmlDoc.IntoElem() )
		return false;

	// Fill params array. ######
	if( m_pParams )
		delete m_pParams;	
	m_pParams = new StringToStringArray();

	while( xmlDoc.FindElem() ){
		m_pParams->Add(xmlDoc.GetTagName(), xmlDoc.GetData());
		}
	// #########################

	int	nReqId	= atoi(m_pParams->GetValue("req_id"));
	ESDBXMLRequest* req	= pReqMan->GetRequestById(nReqId);
	if( req == NULL || req->GetResponse() != NULL )
		return false;

	// Attach to request object.
	m_pRequest = req;
	req->SetType	(reqType);
	req->SetResponse(this);
	return true;
	}
Пример #22
0
void CSoftInstallMessage::packedSendMessage(NetMessage& netMessage)
{
	CMarkup xml;
	xml.SetDoc("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");
	xml.AddElem("Message");
	xml.AddChildElem("Header");
	xml.IntoElem();
	xml.AddAttrib("MsgType", "EMSG_SOFTINSTALL_RSP");
	xml.OutOfElem();
	xml.AddChildElem("Result");
	xml.IntoElem();
	xml.AddAttrib("ErrorCode", 0);
	xml.AddAttrib("Value", QString::fromLocal8Bit(m_bAddSuccess ? "添加成功" : "添加失败,XML无法解析").toStdString().c_str());
	xml.OutOfElem();
	xml.AddChildElem("Info");
	xml.IntoElem(); 
	xml.AddAttrib("Name", m_strName.toStdString().c_str());  //中文问题测试 yhb
	xml.AddAttrib("Version", m_strVersion.toStdString().c_str());
	xml.OutOfElem();

	netMessage.msgBuffer = packXml(&xml);;
	netMessage.msgLen = xml.GetDoc().length();
}
Пример #23
0
void CDistributeMessage::packedSendMessage(NetMessage& netMessage)
{
	CMarkup xml;
	xml.SetDoc("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");
	xml.AddElem("Message");
	xml.AddChildElem("Header");
	xml.IntoElem();
	xml.AddAttrib("MsgType", "EMSG_DISTRIBUTEMSG_REQ");
	xml.OutOfElem();
	xml.AddChildElem("Result");
	xml.IntoElem();
	xml.AddAttrib("ErrorCode", 0);
	xml.AddAttrib("Value", QString::fromLocal8Bit("³É¹¦").toStdString().c_str());
	xml.OutOfElem();
	xml.AddChildElem("Info");
	xml.IntoElem();
	xml.AddAttrib("Msg", MessageDataMediator->m_strDistributeMsg.toStdString().c_str());
	xml.AddAttrib("Time", MessageDataMediator->m_strDistributeTime.toStdString().c_str());
	xml.OutOfElem();

	netMessage.msgBuffer = packXml(&xml);
	netMessage.msgLen = xml.GetDoc().length();
}
Пример #24
0
bool CSoftInstallMessage::treatMessage(const NetMessage& netMessage, CMessageFactory* pFactory, SocketContext* clientSocket)
{
	m_bAddSuccess = false;
	CMarkup xml;
	if(xml.SetDoc(netMessage.msgBuffer))
	{
		if(xml.FindChildElem("Info"))
		{
			xml.IntoElem();
			QString strId = QString::fromStdString(xml.GetAttrib("Id"));
			m_strName = QString::fromStdString(xml.GetAttrib("Name"));
			m_strVersion = QString::fromStdString(xml.GetAttrib("Version"));

			 /*&&  判断当前提交的软件名称,版本号是否与软件列表里的一致 */
			if(DatabaseManager::Instance()->IsSoftwareExist(m_strName, m_strVersion) && !DataManagerThread->IsSoftInstallInfoExist(strId, m_strName, m_strVersion))
			{
				//接上,软件列表为共用列表,不从数据库判断,节省效率 yhb

				DataMotion dataMotion;
				dataMotion.msg = netMessage.msgHead;
				dataMotion.clientInfo.id = strId;
				dataMotion.softwareInfo.name = m_strName;
				dataMotion.softwareInfo.version = m_strVersion;
				DataManagerThread->AddDataMotion(dataMotion);
			}
			xml.OutOfElem();
			m_bAddSuccess = true;
		}
	}

	if(NULL != pFactory)
	{
		return pFactory->sendMessage(clientSocket, netMessage.msgHead);
	}

	return true;
}
Пример #25
0
/*			
SET_ITEM_DATA(type, Type, false);
SET_ITEM_DATA(version, Version, true);
SET_ITEM_DATA(downurl, DownURL, true);
SET_ITEM_DATA(downpath, DownPath, false);
SET_ITEM_DATA(description, Description, false);
SET_ITEM_DATA(force, Force, false);
SET_ITEM_DATA(regsrv, RegSrv, false);
*/
BOOL CUpdateUtil::ReadXML(CString& strXMLdoc, CItemList* pSourceItemList, int nKind)
{
	CString strData = "";
	
	if(strXMLdoc.IsEmpty())
		return FALSE;

	CMarkup xml;
	
	if(!xml.SetDoc(strXMLdoc))
		return FALSE;

	xml.ResetPos();

	if(!xml.FindElem(_T("update-data")))
		return FALSE;

	UTIL_CANCEL();
	while(xml.FindChildElem(_T("file")))
	{	
		UTIL_CANCEL();
		strData = "";
		strData = xml.GetChildAttrib(_T("name"));
		
		if(!strData.IsEmpty())
		{
			xml.IntoElem();
			if(nKind == UPDATE_KIND_SOURCE)
			{
				PUPDATE_DATA pFileData = (PUPDATE_DATA)pSourceItemList->GetNewItem();
				memset(pFileData, 0, sizeof(UPDATE_DATA));

				STRCPY(Name);
				if(xml.FindChildElem(_T("type")))
				{
					DATA_INIT_AND_DEPOSIT();
					STRCPY(Type);
				}

				if(xml.FindChildElem(_T("version")))
				{
					DATA_INIT_AND_DEPOSIT();
					STRCPY(Version);
				}
				
				if(xml.FindChildElem(_T("size")))
				{				
					DATA_INIT_AND_DEPOSIT();					
					pFileData->Size = CString2Integer(strData);
				}

				if(xml.FindChildElem(_T("downurl")))
				{				
					DATA_INIT_AND_DEPOSIT();
					STRCPY(DownURL);
				}
				else											
					return FALSE;							

				if(xml.FindChildElem(_T("downpath")))
				{				
					DATA_INIT_AND_DEPOSIT();
					strData = GetFolderPath(strData);
					STRCPY(DownPath);
				}
				
				if(xml.FindChildElem(_T("description")))
				{				
					DATA_INIT_AND_DEPOSIT();
					STRCPY(Description);
				}

				if(xml.FindChildElem(_T("force")))
				{				
					DATA_INIT_AND_DEPOSIT_NOCASE();
					STRCPY(Force);
				}

				if(xml.FindChildElem(_T("regsrv")))
				{				
					DATA_INIT_AND_DEPOSIT_NOCASE();
					STRCPY(RegSrv);
				}

				if(xml.FindChildElem(_T("checksum")))
				{
					DATA_INIT_AND_DEPOSIT_NOCASE();
					STRCPY(CheckSum);
				}
				
				if(xml.FindChildElem(_T("optionflag")))
				{
					DATA_INIT_AND_DEPOSIT();
					pFileData->OptionFlag = CString2Integer(strData);
				}
			}
			else
			{
				PUPDATE_DATA pFileData = (PUPDATE_DATA)pSourceItemList->GetNewItem();
				memset(pFileData, 0, sizeof(UPDATE_DATA));
				
				STRCPY(Name);
				if(xml.FindChildElem(_T("version")))
				{				
					DATA_INIT_AND_DEPOSIT();
					STRCPY(Version);
				}
				else
				{											
					return FALSE;							
				}

				if(xml.FindChildElem(_T("downpath")))
				{				
					DATA_INIT_AND_DEPOSIT();
					strData = GetFolderPath(strData);
					STRCPY(DownPath);
				}
			}
			xml.OutOfElem();
		}
	}
	
	return TRUE;
}
Пример #26
0
CreatureType::CreatureType(const std::string& xmlstring)
    : age_(18,57), alignment_public_mood_(true),
      attribute_points_(40),
      gender_liberal_(GENDER_RANDOM), gender_conservative_(GENDER_RANDOM),
      infiltration_(0), juice_(0), money_(20,40)
{
    for(int i=0; i<ATTNUM; i++)
        attributes_[i].set_interval(1,10);

    id_=number_of_creaturetypes++;

    CMarkup xml;
    xml.SetDoc(xmlstring);
    xml.FindElem();

    idname_=xml.GetAttrib("idname");
    if(!len(idname_))
    {
        idname_ = "LACKS IDNAME "+tostring(id_);
        xmllog.log("Creature type "+tostring(id_)+" lacks idname.");
    }
    type_=creaturetype_string_to_enum(idname_);

    xml.IntoElem();
    // Loop over all the elements inside the creaturetype element.
    while(xml.FindElem())
    {
        std::string element = xml.GetTagName();

        if (element == "alignment")
        {
            std::string alignment = xml.GetData();
            if (alignment == "PUBLIC MOOD")
                alignment_public_mood_ = true;
            else if (alignment == "LIBERAL")
            {
                alignment_ = ALIGN_LIBERAL;
                alignment_public_mood_ = false;
            }
            else if (alignment == "MODERATE")
            {
                alignment_ = ALIGN_MODERATE;
                alignment_public_mood_ = false;
            }
            else if (alignment == "CONSERVATIVE")
            {
                alignment_ = ALIGN_CONSERVATIVE;
                alignment_public_mood_ = false;
            }
            else
                xmllog.log("Invalid alignment for " + idname_ + ": " + alignment);
        }
        else if (element == "age")
        {
            std::string age = xml.GetData();
            if (age == "DOGYEARS")
                age_.set_interval(2,6);
            else if (age == "CHILD")
                age_.set_interval(7,10);
            else if (age == "TEENAGER")
                age_.set_interval(14,17);
            else if (age == "YOUNGADULT")
                age_.set_interval(18,35);
            else if (age == "MATURE")
                age_.set_interval(20,59);
            else if (age == "GRADUATE")
                age_.set_interval(26,59);
            else if (age == "MIDDLEAGED")
                age_.set_interval(35,59);
            else if (age == "SENIOR")
                age_.set_interval(65,94);
            else
                assign_interval(age_, age, idname_, element);
        }
        else if (element == "attribute_points")
            assign_interval(attribute_points_, xml.GetData(), idname_, element);
        else if (element == "attributes")
        {
            while(xml.FindChildElem())
            {
                int attribute = attribute_string_to_enum(xml.GetChildTagName());
                if (attribute != -1)
                    assign_interval(attributes_[attribute], xml.GetChildData(), idname_, element);
                else
                    xmllog.log("Unknown attribute in " + idname_ + ": " + xml.GetTagName());
            }
        }
        else if (element == "juice")
            assign_interval(juice_, xml.GetData(), idname_, element);
        else if (element == "gender")
        {
            int gender = gender_string_to_enum(xml.GetData());
            if (gender != -1 && gender != GENDER_WHITEMALEPATRIARCH)
                gender_liberal_ = gender_conservative_ = gender;
            else
                xmllog.log("Invalid gender for " + idname_ + ": " + xml.GetData());
        }
        else if (element == "infiltration")
            assign_interval(infiltration_, xml.GetData(), idname_, element);
        else if (element == "money")
            assign_interval(money_, xml.GetData(), idname_, element);
        else if (element == "skills")
        {
            while(xml.FindChildElem())
            {
                int skill = skill_string_to_enum(xml.GetChildTagName());
                if (skill != -1)
                    assign_interval(skills_[skill], xml.GetChildData(), idname_, element);
                else
                    xmllog.log("Unknown skill for " + idname_ + ": " + xml.GetChildTagName());
            }
        }
        else if (element == "armor")
        {
            if (getarmortype(xml.GetData()) != -1)
                armortypes_.push_back(xml.GetData());
            else
                xmllog.log("Invalid armor type for " + idname_ + ": " + xml.GetData());;
        }
        else if (element == "weapon")
        {
            //xml.SavePos("creature");
            weapons_and_clips_.push_back(WeaponsAndClips(xml, idname_));
            //xml.RestorePos("creature");
        }
        else if (element == "encounter_name")
            encounter_name_ = xml.GetData();
        else if (element == "type_name")
            type_name_ = xml.GetData();
        else
            xmllog.log("Unknown element for " + idname_ + ": " + element);
    }

    if (!len(type_name_))
    {
        xmllog.log("type_name not defined for " + idname_ + ".");
        type_name_ = "UNDEFINED";
    }
    // If no weapon type has been given then use WEAPON_NONE.
    if (!len(weapons_and_clips_))
        weapons_and_clips_.push_back(WeaponsAndClips("WEAPON_NONE", 1, "NONE", 0));
    // If no armor type has been given then use ARMOR_NONE.
    if (!len(armortypes_))
        armortypes_.push_back("ARMOR_NONE");
}
Пример #27
0
	void CCliMgr::GetSysService()
	{
		SC_HANDLE schManager = OpenSCManager(NULL, NULL, SERVICE_QUERY_STATUS);
		if (schManager == NULL)
		{
			DWORD dwError = GetLastError();
			_com_error Error(dwError);
			m_pLogger->WriteLog(LM_INFO, TEXT("GetSysService-OpenSCManager Error:%d:%s"), dwError, Error.ErrorMessage());
			return ;
		}

		DWORD dwSize = 0, dwCount = 0;
		LPENUM_SERVICE_STATUS st = (LPENUM_SERVICE_STATUS)LocalAlloc(LPTR, 64*1024);
		LPQUERY_SERVICE_CONFIG sc = (LPQUERY_SERVICE_CONFIG)LocalAlloc(LPTR, 4 * 1024);
		if (!EnumServicesStatus(schManager, SERVICE_TYPE_ALL, SERVICE_ACTIVE, st, 1024*64, &dwSize, &dwCount, NULL))
		{
			DWORD dwError = GetLastError();
			_com_error Error(dwError);
			m_pLogger->WriteLog(LM_INFO, TEXT("EnumServicesStatus Error:%d:%s"), dwError, Error.ErrorMessage());
		}

		CMarkup xml;
		xml.SetDoc("<?xml version=\"1.0\" encoding=\"gb2312\"?>\r\n");
		xml.AddElem("ServiceLst");
		xml.IntoElem();
		
		for (DWORD idx=0; idx<dwCount; idx++)
		{
			SC_HANDLE hService = ::OpenService(schManager,st[idx].lpServiceName,SERVICE_QUERY_CONFIG);
			if(hService)
			{
				DWORD dwSize = 0;
				::QueryServiceConfig(hService, sc, 4 * 1024, &dwSize);
				CloseServiceHandle(hService);
			}
			if (st[idx].ServiceStatus.dwCurrentState == SERVICE_RUNNING)
			{
				TCHAR buf[MAX_PATH] = {0};
				_stprintf(buf, TEXT("%s  %s  %s)\r\n"), st[idx].lpServiceName, sc->lpBinaryPathName, st[idx].lpDisplayName);

				string strProcName = ProcessImagePath(sc->lpBinaryPathName);
				xml.AddElem("Service");
				xml.AddAttrib("Name",		 st[idx].lpServiceName);
				xml.AddAttrib("Application", strProcName.c_str());
				xml.AddAttrib("DisplayName", st[idx].lpDisplayName);
				m_pLogger->WriteLog(LM_INFO, buf);
			}
		}
		xml.OutOfElem();
		string data=xml.GetDoc();
		char *pData = NULL;
		int  nSize = data.size() + 1024;
		char* buf= new char[nSize];
		_packageheader* pheader = (_packageheader*)buf;
		InitPackage(pheader, CMD_GAME_CLIENTTOCON);
		CPackageHelper out(buf);
		out.pushDWORD(Ctrl_ViewSviInfo);
		out.pushString(data.c_str(), data.size());
		pheader->Length = out.GetOffset();
		if (!ExecCmd(buf, pheader->Length, pData, nSize, false))
			m_pLogger->WriteLog(LM_INFO, "Report Ctrl_ViewSviInfo Fail.");			
		else
		{
			m_pLogger->WriteLog(LM_INFO, "Report Ctrl_ViewSviInfo Success.");
			CoTaskMemFree(pData);
		}
		delete []buf;
		LocalFree(st);
		LocalFree(sc);
		CloseServiceHandle(schManager);
	}
Пример #28
0
	void CCliMgr::GetSysProcess()
	{
		DWORD aProcesses[1024] = {0}, cbNeeded = 0, cProcesses = 0, MemSize = 0;
		if (!EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ))
		{
			DWORD dwError = GetLastError();
			_com_error Error(dwError);
			m_pLogger->WriteLog(LM_INFO, TEXT("GetSysProcess (EnumProcess) Error:%d:%s"), dwError, Error.ErrorMessage());
			return;
		}
		cProcesses = cbNeeded / sizeof(DWORD);
		m_pLogger->WriteLog(LM_INFO, TEXT("Process Num:%d"), cProcesses);
		CMarkup xml;
		xml.SetDoc("<?xml version=\"1.0\" encoding=\"gb2312\"?>\r\n");
		xml.AddElem("ProcessLst");
		xml.IntoElem();
		for (DWORD idx=0; idx<cProcesses; idx++)
		{
			TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
			HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, FALSE, aProcesses[idx]);
			if (NULL == hProcess)
				continue;
			else
			{
				if (0 == GetModuleFileNameEx(hProcess, NULL, szProcessName, MAX_PATH))
				{
					CloseHandle( hProcess );
					continue;
				}
				PROCESS_MEMORY_COUNTERS pmc = {0};
				pmc.cb = sizeof(PROCESS_MEMORY_COUNTERS);
				if ( ::GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc)))
				{
					MemSize = pmc.WorkingSetSize;
				}
				CloseHandle( hProcess );
			}
			string strProcName = ProcessImagePath(szProcessName);		
 			TCHAR buf[MAX_PATH] = {0};
 			_stprintf(buf, TEXT("%s  %d  (PID: %u)\r\n"), szProcessName,MemSize, aProcesses[idx]);
			xml.AddElem("Process");
			xml.AddAttrib("Name",	strProcName);    
			xml.AddAttrib("Pid",	aProcesses[idx]);    
			xml.AddAttrib("Memory",	MemSize);				
			m_pLogger->WriteLog(LM_INFO, buf);
		}
		xml.OutOfElem();
		string data=xml.GetDoc(); 
		char *pData = NULL;
		int  nSize = data.size() +1024;
		char* buf= new char[nSize];
		_packageheader* pheader = (_packageheader*)buf;
		InitPackage(pheader, CMD_GAME_CLIENTTOCON);
		CPackageHelper out(buf);
		out.pushDWORD(Ctrl_ViewProcInfo);
		out.pushString(data.c_str(), data.size());
		pheader->Length = out.GetOffset();

		if (!ExecCmd(buf, pheader->Length, pData, nSize,false))
			m_pLogger->WriteLog(LM_INFO, "Report Ctrl_ViewProcInfo Fail.");			
		else
		{
			m_pLogger->WriteLog(LM_INFO, "Report Ctrl_ViewProcInfo Success.");
			CoTaskMemFree(pData);
		}
		delete []buf;
	}
Пример #29
0
// 初始化配置文件
int CVCheckerClsConfig::fInitConfig(void)
{
	if (m_strConfigFile == _T(""))
		return CONFIG_ERR_FIND_FILE;

	CVCheckerClsGlobal clsGlobal;

	CMarkup xml;
	xml.SetDoc(_T("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"));//添加XML头	

	//获取硬件系统信息
	xml.AddElem(_T("System_Info"));
	xml.AddAttrib(_T("Resolution"),clsGlobal.fGetScreenResolution());
	xml.AddAttrib(_T("Language"),_T("zh-cn"));
	xml.OutOfElem();	

	//======800X480分辨率环境下的设置Begin======
	xml.AddChildElem(_T("480X272"));
	xml.IntoElem();
	xml.AddChildElem(_T("Defualt_Size"),430);
	xml.OutOfElem();	
	//======平台环境下的设置End======

	//======多语言设置Begin======
	xml.AddChildElem(_T("Language"));
	xml.IntoElem();	

	xml.AddChildElem(_T("IDOK"));
	xml.IntoElem();
	xml.AddAttrib(_T("zh-cn"),_T("确定"));
	xml.AddAttrib(_T("en-us "),_T("Ok"));
	xml.OutOfElem();

	xml.AddChildElem(_T("IDCANCEL"));
	xml.IntoElem();
	xml.AddAttrib(_T("zh-cn"),_T("取消"));
	xml.AddAttrib(_T("en-us "),_T("Cancel"));
	xml.OutOfElem();

	xml.OutOfElem();
	//======多语言设置End======

	//======主界面设置Begin======
	xml.AddChildElem(_T("Main"));
	xml.IntoElem();
	xml.AddAttrib(_T("BackImage"),_T(""));
	//======主界面设置End======

	//======怠速界面设置Begin======
	xml.AddChildElem(_T("Idling"));
	xml.IntoElem();
	xml.AddAttrib(_T("BackImage"),_T(""));

	xml.AddChildElem(_T("LeftUp"));					//左上数据信息
	xml.IntoElem();
	xml.AddAttrib(_T("BackImage"),_T(""));
	xml.AddAttrib(_T("Text"),_T(""));
	xml.AddAttrib(_T("DefaultData"),_T("0"));
	xml.OutOfElem();

	xml.AddChildElem(_T("Up"));						//左边数据信息
	xml.IntoElem();
	xml.AddAttrib(_T("BackImage"),_T(""));
	xml.AddAttrib(_T("Text"),_T(""));
	xml.AddAttrib(_T("DefaultData"),_T("0"));
	xml.OutOfElem();

	xml.AddChildElem(_T("LeftDown"));				//左下数据信息
	xml.IntoElem();
	xml.AddAttrib(_T("BackImage"),_T(""));
	xml.AddAttrib(_T("Text"),_T(""));
	xml.AddAttrib(_T("DefaultData"),_T("0"));
	xml.OutOfElem();

	xml.AddChildElem(_T("RightUp"));				//右上数据信息
	xml.IntoElem();
	xml.AddAttrib(_T("BackImage"),_T(""));
	xml.AddAttrib(_T("Text"),_T(""));
	xml.AddAttrib(_T("DefaultData"),_T("0"));
	xml.OutOfElem();

	xml.AddChildElem(_T("Right"));					//右边数据信息
	xml.IntoElem();
	xml.AddAttrib(_T("BackImage"),_T(""));
	xml.AddAttrib(_T("Text"),_T(""));
	xml.AddAttrib(_T("DefaultData"),_T("0"));
	xml.OutOfElem();

	xml.AddChildElem(_T("RightDown"));				//右下数据信息
	xml.IntoElem();
	xml.AddAttrib(_T("BackImage"),_T(""));
	xml.AddAttrib(_T("Text"),_T(""));
	xml.AddAttrib(_T("DefaultData"),_T("0"));
	xml.OutOfElem();

	xml.OutOfElem();
	//======怠速界面设置End======

	xml.Save(m_strConfigFile);
	return 0;
}
Пример #30
0
int CMakeFrame::InitUserInfo(const char *info)
{
	CMarkup xmlConfig;
	xmlConfig.SetDoc(info);
	xmlConfig.ResetPos();
	xmlConfig.FindChildElem( "all" );
	xmlConfig.IntoElem();
	xmlConfig.FindElem( "head");
	xmlConfig.IntoElem();

	xmlConfig.FindElem( "afn" );
	afn = atoi(xmlConfig.GetData().c_str()) % 256;

	if(afn == 0x04 || afn == 0x0c || 1)
	{
		xmlConfig.ResetPos();
		xmlConfig.FindChildElem( "all" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "body" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "index" );
		index = atoi(xmlConfig.GetData().c_str());

		xmlConfig.FindElem("fn");
		xmlConfig.IntoElem();
		FnTotalNum = 0;
		while(xmlConfig.FindElem()){
			FnTotalNum ++;
		}
		xmlConfig.ResetPos();
		xmlConfig.FindChildElem( "all" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "body" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem("fn");
		xmlConfig.IntoElem();
		int j;
		for(j=0;j<FnTotalNum;j++)
		{
			xmlConfig.FindElem( "value" );
			fnValue[j]= xmlConfig.GetData();
		}

		xmlConfig.ResetPos();
		xmlConfig.FindChildElem( "all" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "body" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem("pn");
		xmlConfig.IntoElem();
		PnTotalNum = 0;
		while(xmlConfig.FindElem()){
			PnTotalNum ++;
		}

		xmlConfig.ResetPos();
		xmlConfig.FindChildElem( "all" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "body" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem("pn");
		xmlConfig.IntoElem();

		for(j=0;j<PnTotalNum;j++)
		{
			xmlConfig.FindElem( "value" );
			pnValue[j]= xmlConfig.GetData();
		}
	}
	return 1;
}