/* */ #include "ResourcesMetalinkParserState.h" #include "MetalinkParserStateMachine.h" #include "Util.h" #include "RecoverableException.h" void ResourcesMetalinkParserState::beginElement(MetalinkParserStateMachine* stm, const string& name, const map& attrs) { if(name == "url") { stm->setURLState(); string type; { map::const_iterator itr = attrs.find("type"); if(itr == attrs.end()) { return; } else { type = (*itr).second; } } string location; { map::const_iterator itr = attrs.find("location"); if(itr != attrs.end()) { location = Util::toUpper((*itr).second); } } int32_t preference; { map::const_iterator itr = attrs.find("preference"); if(itr == attrs.end()) { preference = 0; } else { try { preference = Util::parseInt((*itr).second); } catch(RecoverableException* e) { delete e; preference = 0; } } } int32_t maxConnections; { map::const_iterator itr = attrs.find("maxconnections"); if(itr == attrs.end()) { maxConnections = -1; } else { try { maxConnections = Util::parseInt((*itr).second); } catch(RecoverableException* e) { delete 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 string& name, const string& characters) { stm->setFileState(); }