/* */ #include "FileMetalinkParserState.h" #include "MetalinkParserStateMachine.h" #include "Util.h" #include "RecoverableException.h" namespace aria2 { const std::string FileMetalinkParserState::SIZE("size"); const std::string FileMetalinkParserState::METALINK_VERSION("version"); const std::string FileMetalinkParserState::LANGUAGE("language"); const std::string FileMetalinkParserState::OS("os"); const std::string FileMetalinkParserState::VERIFICATION("verification"); const std::string FileMetalinkParserState::RESOURCES("resources"); const std::string FileMetalinkParserState::MAXCONNECTIONS("maxconnections"); void FileMetalinkParserState::beginElement(MetalinkParserStateMachine* stm, const std::string& name, const std::map& attrs) { if(name == FileMetalinkParserState::SIZE) { stm->setSizeState(); } else if(name == FileMetalinkParserState::METALINK_VERSION) { stm->setVersionState(); } else if(name == FileMetalinkParserState::LANGUAGE) { stm->setLanguageState(); } else if(name == FileMetalinkParserState::OS) { stm->setOSState(); } else if(name == FileMetalinkParserState::VERIFICATION) { stm->setVerificationState(); } else if(name == FileMetalinkParserState::RESOURCES) { stm->setResourcesState(); int maxConnections; { std::map::const_iterator itr = attrs.find(FileMetalinkParserState::MAXCONNECTIONS); if(itr == attrs.end()) { maxConnections = -1; } else { try { maxConnections = Util::parseInt((*itr).second); } catch(RecoverableException& e) { maxConnections = -1; } } } stm->setMaxConnectionsOfEntry(maxConnections); } else { stm->setSkipTagState(this); } } void FileMetalinkParserState::endElement(MetalinkParserStateMachine* stm, const std::string& name, const std::string& characters) { stm->commitEntryTransaction(); stm->setFilesState(); } } // namespace aria2