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