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