/* */ #ifndef D_METALINK_ENTRY_H #define D_METALINK_ENTRY_H #include "common.h" #include #include #include "SharedHandle.h" namespace aria2 { class MetalinkResource; class MetalinkMetaurl; class FileEntry; #ifdef ENABLE_MESSAGE_DIGEST class Checksum; class ChunkChecksum; #endif // ENABLE_MESSAGE_DIGEST class Signature; class MetalinkEntry { public: SharedHandle file; std::string version; std::vector languages; std::vector oses; // True if size is specified in Metalink document. bool sizeKnown; std::vector > resources; std::vector > metaurls; int maxConnections; // Metalink3Spec #ifdef ENABLE_MESSAGE_DIGEST SharedHandle checksum; SharedHandle chunkChecksum; #endif // ENABLE_MESSAGE_DIGEST private: SharedHandle signature_; public: MetalinkEntry(); ~MetalinkEntry(); MetalinkEntry& operator=(const MetalinkEntry& metalinkEntry); const std::string& getPath() const; int64_t getLength() const; const SharedHandle& getFile() const { return file; } void dropUnsupportedResource(); void reorderResourcesByPriority(); void reorderMetaurlsByPriority(); bool containsLanguage(const std::string& lang) const; bool containsOS(const std::string& os) const; void setLocationPriority (const std::vector& locations, int priorityToAdd); void setProtocolPriority(const std::string& protocol, int priorityToAdd); static void toFileEntry (std::vector >& fileEntries, const std::vector >& metalinkEntries); void setSignature(const SharedHandle& signature); const SharedHandle& getSignature() const { return signature_; } }; } // namespace aria2 #endif // D_METALINK_ENTRY_H