#ifndef DOWNLOAD_CLIENT_H #define DOWNLOAD_CLIENT_H #include #include #include #include "SslClient.h" using std::pair; using std::string; using std::vector; class QFile; class DownloadClient: public SslClient { Q_OBJECT public: /** * @brief Initialize new DownloadClient instance */ DownloadClient(); /** * @brief Initialize new DownloadClient instance * @param addr server address or hostname to connect to */ DownloadClient(QString addr); /** * @brief Download file from server * @param file file path on client machine */ void Download(const string &file); /** * @brief Download file from server * @param file pair of file name and it's md5 hash value */ void Download(const pair &file); /** * @brief Download list of files * @param files associative array of file names and it's md5 hashes * @note this is designated method among all of three */ void Download(const vector > &files); signals: /** * @brief This signal is emitted when all files have been downloaded */ void downloadFinished(); private: /** * @brief indicates that program is downloading file(s) right now */ bool isDownloading; /** * @brief name of file that is being downloaded */ QFile *current; /** * @brief index of file that is being downloaded */ int currentId; /** * @brief List of file to */ vector > files; /** * @brief start file-by-file downloading process */ void DoDownload(); private slots: void FileDataRecieved(SslClient::RequestType &type, QByteArray &confdata); }; #endif