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; }
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; }
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; }
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; }
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; }
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; }
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; }