/* */ #ifndef _D_METALINK_ENTRY_H_ #define _D_METALINK_ENTRY_H_ #include "common.h" #include "MetalinkResource.h" #include "Checksum.h" #include "FileEntry.h" #ifdef ENABLE_MESSAGE_DIGEST #include "ChunkChecksum.h" #endif // ENABLE_MESSAGE_DIGEST #include class MetalinkEntry; typedef SharedHandle MetalinkEntryHandle; typedef deque MetalinkEntries; class MetalinkEntry { public: FileEntryHandle file; string version; string language; string os; MetalinkResources resources; int32_t maxConnections; #ifdef ENABLE_MESSAGE_DIGEST ChecksumHandle checksum; ChunkChecksumHandle chunkChecksum; #endif // ENABLE_MESSAGE_DIGEST public: MetalinkEntry(); ~MetalinkEntry(); MetalinkEntry& operator=(const MetalinkEntry& metalinkEntry) { if(this != &metalinkEntry) { this->file = metalinkEntry.file; this->version = metalinkEntry.version; this->language = metalinkEntry.language; this->os = metalinkEntry.os; this->maxConnections = metalinkEntry.maxConnections; #ifdef ENABLE_MESSAGE_DIGEST this->checksum = metalinkEntry.checksum; this->chunkChecksum = metalinkEntry.chunkChecksum; #endif // ENABLE_MESSAGE_DIGEST } return *this; } string getPath() const { return file->getPath(); } int64_t getLength() const { return file->getLength(); } void dropUnsupportedResource(); void reorderResourcesByPreference(); void setLocationPreference(const Strings& locations, int32_t preferenceToAdd); static FileEntries toFileEntry(const MetalinkEntries& metalinkEntries); }; #endif // _D_METALINK_ENTRY_H_