From 2dc0ca689c0ea24b5e8b28e89cabbf2bbe945fb5 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Wed, 9 Nov 2011 19:09:35 +0300 Subject: [downloader] Added resume support for chunked downloads --- platform/chunks_download_strategy.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'platform/chunks_download_strategy.cpp') diff --git a/platform/chunks_download_strategy.cpp b/platform/chunks_download_strategy.cpp index ff22ab3f1b..88ead660a8 100644 --- a/platform/chunks_download_strategy.cpp +++ b/platform/chunks_download_strategy.cpp @@ -10,7 +10,8 @@ namespace downloader ChunksDownloadStrategy::RangeT const ChunksDownloadStrategy::INVALID_RANGE = RangeT(-1, -1); -ChunksDownloadStrategy::ChunksDownloadStrategy(vector const & urls, int64_t fileSize, int64_t chunkSize) +ChunksDownloadStrategy::ChunksDownloadStrategy(vector const & urls, int64_t fileSize, + int64_t chunkSize) : m_chunkSize(chunkSize) { // init servers list @@ -18,12 +19,13 @@ ChunksDownloadStrategy::ChunksDownloadStrategy(vector const & urls, int6 m_servers.push_back(make_pair(urls[i], INVALID_RANGE)); // init chunks which should be downloaded - // @TODO implement download resume by saving chunks to download for specified file for (int64_t i = 0; i < fileSize; i += chunkSize) - { - m_chunksToDownload.insert(RangeT(i, min(i + chunkSize - 1, - fileSize - 1))); - } + m_chunksToDownload.insert(RangeT(i, min(i + chunkSize - 1, fileSize - 1))); +} + +void ChunksDownloadStrategy::SetChunksToDownload(RangesContainerT & chunks) +{ + m_chunksToDownload.swap(chunks); } void ChunksDownloadStrategy::ChunkFinished(bool successfully, int64_t begRange, int64_t endRange) -- cgit v1.2.3