/* */ #include "MetalinkParserStateMachine.h" #include "MetalinkParserStateImpl.h" #include "Metalinker.h" #include "MetalinkEntry.h" namespace aria2 { MetalinkParserState* MetalinkParserStateMachine::_initialState = new InitialMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_metalinkState = new MetalinkMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_filesState = new FilesMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_fileState = new FileMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_sizeState = new SizeMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_versionState = new VersionMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_languageState = new LanguageMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_osState = new OSMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_verificationState = new VerificationMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_hashState = new HashMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_piecesState = new PiecesMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_pieceHashState = new PieceHashMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_signatureState = new SignatureMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_resourcesState = new ResourcesMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_urlState = new URLMetalinkParserState(); MetalinkParserState* MetalinkParserStateMachine::_skipTagState = new SkipTagMetalinkParserState(); MetalinkParserStateMachine::MetalinkParserStateMachine(): _ctrl(new MetalinkParserController()) { _stateStack.push(_initialState); } void MetalinkParserStateMachine::setMetalinkState() { _stateStack.push(_metalinkState); } void MetalinkParserStateMachine::setFilesState() { _stateStack.push(_filesState); } void MetalinkParserStateMachine::setFileState() { _stateStack.push(_fileState); } void MetalinkParserStateMachine::setSizeState() { _stateStack.push(_sizeState); } void MetalinkParserStateMachine::setVersionState() { _stateStack.push(_versionState); } void MetalinkParserStateMachine::setLanguageState() { _stateStack.push(_languageState); } void MetalinkParserStateMachine::setOSState() { _stateStack.push(_osState); } void MetalinkParserStateMachine::setVerificationState() { _stateStack.push(_verificationState); } void MetalinkParserStateMachine::setHashState() { _stateStack.push(_hashState); } void MetalinkParserStateMachine::setPiecesState() { _stateStack.push(_piecesState); } void MetalinkParserStateMachine::setPieceHashState() { _stateStack.push(_pieceHashState); } void MetalinkParserStateMachine::setSignatureState() { _stateStack.push(_signatureState); } void MetalinkParserStateMachine::setResourcesState() { _stateStack.push(_resourcesState); } void MetalinkParserStateMachine::setURLState() { _stateStack.push(_urlState); } void MetalinkParserStateMachine::setSkipTagState() { _stateStack.push(_skipTagState); } bool MetalinkParserStateMachine::finished() const { return _stateStack.top() == _initialState; } void MetalinkParserStateMachine::newEntryTransaction() { _ctrl->newEntryTransaction(); } void MetalinkParserStateMachine::setFileNameOfEntry(const std::string& filename) { _ctrl->setFileNameOfEntry(filename); } void MetalinkParserStateMachine::setFileLengthOfEntry(uint64_t length) { _ctrl->setFileLengthOfEntry(length); } void MetalinkParserStateMachine::setVersionOfEntry(const std::string& version) { _ctrl->setVersionOfEntry(version); } void MetalinkParserStateMachine::setLanguageOfEntry(const std::string& language) { _ctrl->setLanguageOfEntry(language); } void MetalinkParserStateMachine::setOSOfEntry(const std::string& os) { _ctrl->setOSOfEntry(os); } void MetalinkParserStateMachine::setMaxConnectionsOfEntry(int maxConnections) { _ctrl->setMaxConnectionsOfEntry(maxConnections); } void MetalinkParserStateMachine::commitEntryTransaction() { _ctrl->commitEntryTransaction(); } void MetalinkParserStateMachine::newResourceTransaction() { _ctrl->newResourceTransaction(); } void MetalinkParserStateMachine::setURLOfResource(const std::string& url) { _ctrl->setURLOfResource(url); } void MetalinkParserStateMachine::setTypeOfResource(const std::string& type) { _ctrl->setTypeOfResource(type); } void MetalinkParserStateMachine::setLocationOfResource (const std::string& location) { _ctrl->setLocationOfResource(location); } void MetalinkParserStateMachine::setPreferenceOfResource(int preference) { _ctrl->setPreferenceOfResource(preference); } void MetalinkParserStateMachine::setMaxConnectionsOfResource(int maxConnections) { _ctrl->setMaxConnectionsOfResource(maxConnections); } void MetalinkParserStateMachine::commitResourceTransaction() { _ctrl->commitResourceTransaction(); } void MetalinkParserStateMachine::cancelResourceTransaction() { _ctrl->cancelResourceTransaction(); } void MetalinkParserStateMachine::newChecksumTransaction() { _ctrl->newChecksumTransaction(); } void MetalinkParserStateMachine::setTypeOfChecksum(const std::string& type) { _ctrl->setTypeOfChecksum(type); } void MetalinkParserStateMachine::setHashOfChecksum(const std::string& md) { _ctrl->setHashOfChecksum(md); } void MetalinkParserStateMachine::commitChecksumTransaction() { _ctrl->commitChecksumTransaction(); } void MetalinkParserStateMachine::cancelChecksumTransaction() { _ctrl->cancelChecksumTransaction(); } void MetalinkParserStateMachine::newChunkChecksumTransaction() { _ctrl->newChunkChecksumTransaction(); } void MetalinkParserStateMachine::setLengthOfChunkChecksum(size_t length) { _ctrl->setLengthOfChunkChecksum(length); } void MetalinkParserStateMachine::setTypeOfChunkChecksum(const std::string& type) { _ctrl->setTypeOfChunkChecksum(type); } void MetalinkParserStateMachine::createNewHashOfChunkChecksum(size_t order) { _ctrl->createNewHashOfChunkChecksum(order); } void MetalinkParserStateMachine::setMessageDigestOfChunkChecksum (const std::string& md) { _ctrl->setMessageDigestOfChunkChecksum(md); } void MetalinkParserStateMachine::addHashOfChunkChecksum() { _ctrl->addHashOfChunkChecksum(); } void MetalinkParserStateMachine::commitChunkChecksumTransaction() { _ctrl->commitChunkChecksumTransaction(); } void MetalinkParserStateMachine::cancelChunkChecksumTransaction() { _ctrl->cancelChunkChecksumTransaction(); } void MetalinkParserStateMachine::newSignatureTransaction() { _ctrl->newSignatureTransaction(); } void MetalinkParserStateMachine::setTypeOfSignature(const std::string& type) { _ctrl->setTypeOfSignature(type); } void MetalinkParserStateMachine::setFileOfSignature(const std::string& file) { _ctrl->setFileOfSignature(file); } void MetalinkParserStateMachine::setBodyOfSignature(const std::string& body) { _ctrl->setBodyOfSignature(body); } void MetalinkParserStateMachine::commitSignatureTransaction() { _ctrl->commitSignatureTransaction(); } void MetalinkParserStateMachine::cancelSignatureTransaction() { _ctrl->cancelSignatureTransaction(); } void MetalinkParserStateMachine::beginElement (const std::string& name, const std::map& attrs) { _stateStack.top()->beginElement(this, name, attrs); } void MetalinkParserStateMachine::endElement (const std::string& name, const std::string& characters) { _stateStack.top()->endElement(this, name, characters); _stateStack.pop(); } bool MetalinkParserStateMachine::needsCharactersBuffering() const { return _stateStack.top()->needsCharactersBuffering(); } } // namespace aria2