/* */ #ifndef D_METALINK_PARSER_CONTROLLER_H #define D_METALINK_PARSER_CONTROLLER_H #include "common.h" #include #include #include #include "SharedHandle.h" namespace aria2 { class Metalinker; class MetalinkEntry; class MetalinkResource; class MetalinkMetaurl; class Signature; #ifdef ENABLE_MESSAGE_DIGEST class Checksum; class ChunkChecksum; #endif // ENABLE_MESSAGE_DIGEST class MetalinkParserController { private: SharedHandle metalinker_; SharedHandle tEntry_; SharedHandle tResource_; SharedHandle tMetaurl_; #ifdef ENABLE_MESSAGE_DIGEST SharedHandle tChecksum_; SharedHandle tChunkChecksumV4_; // Metalink4Spec std::vector tempChunkChecksumsV4_; // Metalink4Spec SharedHandle tChunkChecksum_; // Metalink3Spec std::vector > tempChunkChecksums_;//Metalink3Spec std::pair tempHashPair_; // Metalink3Spec #endif // ENABLE_MESSAGE_DIGEST SharedHandle tSignature_; std::string baseUri_; public: MetalinkParserController(); ~MetalinkParserController(); const SharedHandle& getResult() const { return metalinker_; } void newEntryTransaction(); void setFileNameOfEntry(const std::string& filename); void setFileLengthOfEntry(int64_t length); void setVersionOfEntry(const std::string& version); void setLanguageOfEntry(const std::string& language); void setOSOfEntry(const std::string& os); void setMaxConnectionsOfEntry(int maxConnections); void commitEntryTransaction(); void cancelEntryTransaction(); void newResourceTransaction(); void setURLOfResource(const std::string& url); void setTypeOfResource(const std::string& type); void setLocationOfResource(const std::string& location); void setPriorityOfResource(int priority); void setMaxConnectionsOfResource(int maxConnections); void commitResourceTransaction(); void cancelResourceTransaction(); void newChecksumTransaction(); void setTypeOfChecksum(const std::string& type); void setHashOfChecksum(const std::string& md); void commitChecksumTransaction(); void cancelChecksumTransaction(); void newChunkChecksumTransactionV4(); // Metalink4Spec void setTypeOfChunkChecksumV4(const std::string& type); // Metalink4Spec void setLengthOfChunkChecksumV4(size_t length); // Metalink4Spec void addHashOfChunkChecksumV4(const std::string& md); // Metalink4Spec void commitChunkChecksumTransactionV4(); // Metalink4Spec void cancelChunkChecksumTransactionV4(); // Metalink4Spec void newChunkChecksumTransaction(); // Metalink3Spec void setTypeOfChunkChecksum(const std::string& type); // Metalink3Spec void setLengthOfChunkChecksum(size_t length); // Metalink3Spec void addHashOfChunkChecksum(size_t order, const std::string& md);// Metalink3Spec void createNewHashOfChunkChecksum(size_t order); // Metalink3Spec void setMessageDigestOfChunkChecksum(const std::string& md); // Metalink3Spec void addHashOfChunkChecksum(); // Metalink3Spec void commitChunkChecksumTransaction(); // Metalink3Spec void cancelChunkChecksumTransaction(); // Metalink3Spec void newSignatureTransaction(); void setTypeOfSignature(const std::string& type); void setFileOfSignature(const std::string& file); void setBodyOfSignature(const std::string& body); void commitSignatureTransaction(); void cancelSignatureTransaction(); void newMetaurlTransaction(); void setURLOfMetaurl(const std::string& url); void setMediatypeOfMetaurl(const std::string& mediatype); void setPriorityOfMetaurl(int priority); void setNameOfMetaurl(const std::string& name); void commitMetaurlTransaction(); void cancelMetaurlTransaction(); void setBaseUri(const std::string& baseUri) { baseUri_ = baseUri; } }; } // namespace aria2 #endif // D_METALINK_PARSER_CONTROLLER_H