Exemplo n.º 1
0
void ControlChannel::ProcessUpgradeResponse(HttpOper *oper)
{
	HttpParaMap *paras = oper->GetParas();
	HttpParaMap::iterator itr = paras->begin();
	LogUtility::Log(LOG_LEVEL_DEBUG, "ControlChannel ProcessOpUpgradeResponse...");
    m_upgradeResp.clear();

	while(itr != paras->end())
	{
		HttpPara *para = (HttpPara *)itr->second;
		std::string name = para->GetName();
		if(!name.compare(PARA_UPGRADE_URL))
		{
			std::string url = "";
			GetHttpParaValueString(para->GetValue(), url);
			if(!url.empty())
			{
                m_upgradeResp.insert(std::map<std::string, std::string>::value_type(name, url));
                m_upgradeResp.insert(std::map<std::string, std::string>::value_type(PARA_RES, "0"));
    			m_should_send = 1;
			}
		}
		itr ++;
	}

	return;
}
Exemplo n.º 2
0
void ControlChannel::ProcessSysCommandResponse(HttpOper *oper)
{
	HttpParaMap *paras = oper->GetParas();
	HttpParaMap::iterator itr = paras->begin();
	LogUtility::Log(LOG_LEVEL_DEBUG, "ControlChannel ProcessSysCommandResponse...");
	m_syscmdResp.clear();

	while(itr != paras->end())
	{
		HttpPara *para = (HttpPara *)itr->second;
		std::string name = para->GetName();
		if(!name.compare(PARA_CMD))
		{
            std::string cmd = "";
            GetHttpParaValueString(para->GetValue(), cmd);
            m_syscmdResp.insert(std::map<std::string, std::string>::value_type(name, cmd));
            m_syscmdResp.insert(std::map<std::string, std::string>::value_type(PARA_RES, "0"));
            if(m_rebootTimer)
                DestroyTimer(m_rebootTimer);
            m_rebootTimer = CreateTimer(REBOOT_TIMER_NAME, TIMER_SEC_TO_MSEC(10), this, ControlChannelTimerHandler, false);
            StartTimer(m_rebootTimer);
		}

		itr ++;
	}
	m_should_send = 1;

	return;

}
Exemplo n.º 3
0
void ControlChannel::ProcessHelloResponse(HttpOper *oper)
{
	HttpParaMap *paras = oper->GetParas();
	HttpParaMap::iterator itr = paras->begin();
	LogUtility::Log(LOG_LEVEL_DEBUG, "ControlChannel ProcessHelloResponse...");

	while(itr != paras->end())
	{
		HttpPara *para = (HttpPara *)itr->second;
		std::string name = para->GetName();
		if(!name.compare(PARA_CFG_FLG))
		{
			m_cfg_flag = GetHttpParaValueInt(para->GetValue());
		}
		else if(!name.compare(PARA_INVL))
		{
			int invl = GetHttpParaValueInt(para->GetValue());
			if((invl != m_invl) && (invl > 10) && (invl < 3600))
			{
				RunningConfigTable table;
				table.SetInvl(invl);
				table.Commit();
				m_invl = invl;
                m_hello_end = (int)time(NULL) + m_invl;
				//ChangeHelloInvl(invl, 1);
			}
		}
		itr ++;
	}

	return;
}
Exemplo n.º 4
0
void ControlChannel::ProcessBaseInfoResponse(HttpOper *oper)
{
	HttpParaMap *paras = oper->GetParas();
	HttpParaMap::iterator itr = paras->begin();
	RunningConfigTable table;
	LogUtility::Log(LOG_LEVEL_DEBUG, "ControlChannel ProcessBaseInfoResponse...");
	while(itr != paras->end())
	{
		HttpPara *para = (HttpPara *)itr->second;
		std::string name = para->GetName();
		if(!name.compare(PARA_SITE_ID))
		{
			std::string siteid = "";
			GetHttpParaValueString(para->GetValue(), siteid);
			if(!siteid.empty())
				table.SetSiteId(siteid);
		}
		else if(!name.compare(PARA_SITE_NAME))
		{
			std::string sitename = "";
			GetHttpParaValueString(para->GetValue(), sitename);
			if(!sitename.empty())
				table.SetSiteName(sitename);
		}
		else if(!name.compare(PARA_SITE_ADDR))
		{
			std::string siteaddr = "";
			GetHttpParaValueString(para->GetValue(), siteaddr);
			if(!siteaddr.empty())
				table.SetSiteAddr(siteaddr);
		}
		else if(!name.compare(PARA_AP_LON))
		{
			float lon = GetHttpParaValueFloat(para->GetValue());
			table.SetAppLon(lon);
		}
		else if(!name.compare(PARA_AP_LAT))
		{
			float lat = GetHttpParaValueFloat(para->GetValue());
			table.SetAppLat(lat);
		}
		else if(!name.compare(PARA_DEV_ADDR))
		{
			std::string devaddr = "";
			GetHttpParaValueString(para->GetValue(), devaddr);
			if(!devaddr.empty())
				table.SetDevAddr(devaddr);
		}
		itr ++;
	}

	m_runtable_flag = 1;
	table.SetFlag(m_runtable_flag);
	table.Commit();
	m_should_update = 1;

	return;
}
Exemplo n.º 5
0
HttpOper *HttpOper::CreateOper(string oper)
{
	split_vector_type paras;
	int op_get = 0;
	HttpOper *http_oper = NULL;

	LogUtility::Log(LOG_LEVEL_DEBUG, "Create oper %s", oper.c_str());

	split(paras, oper, is_any_of("&"), token_compress_on);
	if(paras.size() < 1)
		return NULL;

	LogUtility::Log(LOG_LEVEL_DEBUG, "Para size %d", paras.size());

	for(int i = 0; i < paras.size(); i ++)
	{
		string para_string = paras[i];

		LogUtility::Log(LOG_LEVEL_DEBUG, "Process para %s", para_string.c_str());

		trim(para_string);
		if(para_string.length() <= 0)
			continue;

		HttpPara *para = HttpPara::CreatePara(para_string);
		if(!http_oper)
		{
			if(!para)
				return NULL;
			if(para->GetName().compare("op")) {
				delete para;
				return NULL;
			}
			http_oper = new HttpOper(GetHttpParaValueInt(para->GetValue()));
			delete para;
			if(!http_oper)
				return NULL;
			continue;
		}
		if(!para)
			continue;
		http_oper->AddPara(para);
	}

	return http_oper;
}
Exemplo n.º 6
0
string HttpOper::ToString()
{
	string result;

	result = "op=" + numToString<int>(m_oper);

	HttpParaMap::iterator itr = m_paras.begin();


	while(itr != m_paras.end())
	{
		HttpPara *para = (HttpPara *)itr->second;
		result += "&";
		result += para->ToString();
		itr ++;
	}

	return result;
}
Exemplo n.º 7
0
void ControlChannel::ProcessDeviceConfigResponse(HttpOper *oper)
{
	HttpParaMap *paras = oper->GetParas();
	HttpParaMap::iterator itr = paras->begin();
	RunningConfigTable table;
	int data_channel_changed = 0;

	LogUtility::Log(LOG_LEVEL_DEBUG, "ControlChannel ProcessDeviceConfigResponse...");

	m_configResp.clear();

	while(itr != paras->end())
	{
		HttpPara *para = (HttpPara *)itr->second;
		std::string name = para->GetName();
		if(!name.compare(PARA_UP_INVL))
		{
			int invl = GetHttpParaValueInt(para->GetValue());
			if((invl > 10) && (invl < 3600))
			{
				table.SetUpInvl(invl);
				data_channel_changed = 1;
			}
		}
		else if(!name.compare(PARA_SRV_CODE))
		{
			std::string code = "";
			GetHttpParaValueString(para->GetValue(), code);
			if(!code.empty())
				table.SetSrvCode(code);
		}
		else if(!name.compare(PARA_DATA_SERVER))
		{
			std::string url = "";
			GetHttpParaValueString(para->GetValue(), url);
			if(!url.empty())
			{
				table.SetDataUrl(url);
				data_channel_changed = 1;
			}
		}
		else if(!name.compare(PARA_CONTROL_SERVER))
		{
			std::string url = "";
			GetHttpParaValueString(para->GetValue(), url);
			if(!url.empty()) {
				table.SetUrl(url);
				m_url = url;
			}
		}

		m_configResp.insert(std::map<std::string, int>::value_type(name, 1));
		itr ++;
	}

	table.Commit();

	m_should_update = 1;
	m_should_send = 1;

	if(data_channel_changed)
		DATA_INSTANCE->RunningTableUpdated();

	return;
}