/* */ #include "PiecesMetalinkParserState.h" #include "MetalinkParserStateMachine.h" #include "RecoverableException.h" #include "Util.h" namespace aria2 { const std::string PiecesMetalinkParserState::HASH("hash"); const std::string PiecesMetalinkParserState::PIECE("piece"); void PiecesMetalinkParserState::beginElement(MetalinkParserStateMachine* stm, const std::string& name, const std::map& attrs) { if(name == PiecesMetalinkParserState::HASH) { stm->setPieceHashState(); std::map::const_iterator itr = attrs.find(PiecesMetalinkParserState::PIECE); if(itr == attrs.end()) { stm->cancelChunkChecksumTransaction(); } else { try { stm->createNewHashOfChunkChecksum(Util::parseInt((*itr).second)); } catch(RecoverableException& e) { stm->cancelChunkChecksumTransaction(); } } } else { stm->setSkipTagState(this); } } void PiecesMetalinkParserState::endElement(MetalinkParserStateMachine* stm, const std::string& name, const std::string& characters) { stm->commitChunkChecksumTransaction(); stm->setVerificationState(); } } // namespace aria2