/* */ #include "ResourcesMetalinkParserState.h" #include "MetalinkParserStateMachine.h" #include "Util.h" #include "RecoverableException.h" namespace aria2 { const std::string ResourcesMetalinkParserState::URL("url"); const std::string ResourcesMetalinkParserState::TYPE("type"); const std::string ResourcesMetalinkParserState::LOCATION("location"); const std::string ResourcesMetalinkParserState::PREFERENCE("preference"); const std::string ResourcesMetalinkParserState::MAXCONNECTIONS("maxconnections"); void ResourcesMetalinkParserState::beginElement(MetalinkParserStateMachine* stm, const std::string& name, const std::map& attrs) { if(name == ResourcesMetalinkParserState::URL) { stm->setURLState(); std::string type; { std::map::const_iterator itr = attrs.find(ResourcesMetalinkParserState::TYPE); if(itr == attrs.end()) { return; } else { type = (*itr).second; } } std::string location; { std::map::const_iterator itr = attrs.find(ResourcesMetalinkParserState::LOCATION); if(itr != attrs.end()) { location = Util::toUpper((*itr).second); } } int preference; { std::map::const_iterator itr = attrs.find(ResourcesMetalinkParserState::PREFERENCE); if(itr == attrs.end()) { preference = 0; } else { try { preference = Util::parseInt((*itr).second); } catch(RecoverableException& e) { preference = 0; } } } int maxConnections; { std::map::const_iterator itr = attrs.find(ResourcesMetalinkParserState::MAXCONNECTIONS); if(itr == attrs.end()) { maxConnections = -1; } else { try { maxConnections = Util::parseInt((*itr).second); } catch(RecoverableException& e) { maxConnections = -1; } } } stm->newResourceTransaction(); stm->setTypeOfResource(type); stm->setLocationOfResource(location); stm->setPreferenceOfResource(preference); stm->setMaxConnectionsOfResource(maxConnections); } else { stm->setSkipTagState(this); } } void ResourcesMetalinkParserState::endElement(MetalinkParserStateMachine* stm, const std::string& name, const std::string& characters) { stm->setFileState(); } } // namespace aria2