Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Zolotarev <deathbaba@gmail.com>2011-11-10 13:23:26 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:27:33 +0300
commitecb217280fefcf2a4306f39245c881ad38a96f16 (patch)
tree39b49c77f630c1e6c85dbccd9b2578f3cebd72c8 /platform/http_request.cpp
parent2dc0ca689c0ea24b5e8b28e89cabbf2bbe945fb5 (diff)
[downloader] Some fixes after code review
Diffstat (limited to 'platform/http_request.cpp')
-rw-r--r--platform/http_request.cpp55
1 files changed, 29 insertions, 26 deletions
diff --git a/platform/http_request.cpp b/platform/http_request.cpp
index b1af6b8a80..30de25f693 100644
--- a/platform/http_request.cpp
+++ b/platform/http_request.cpp
@@ -25,19 +25,10 @@ HttpThread * CreateNativeHttpThread(string const & url,
int64_t endRange = -1,
int64_t expectedSize = -1,
string const & postBody = string());
-void DeleteNativeHttpThread(HttpThread * request);
+void DeleteNativeHttpThread(HttpThread * thread);
//////////////////////////////////////////////////////////////////////////////////////////
-HttpRequest::HttpRequest(CallbackT onFinish, CallbackT onProgress)
- : m_status(EInProgress), m_progress(make_pair(0, -1)),
- m_onFinish(onFinish), m_onProgress(onProgress)
-{
-}
-
-HttpRequest::~HttpRequest()
-{
-}
-//////////////////////////////////////////////////////////////////////////////////////////////////////////
+/// Stores server response into the memory
class MemoryHttpRequest : public HttpRequest, public IHttpThreadCallback
{
HttpThread * m_thread;
@@ -84,17 +75,6 @@ public:
}
};
-HttpRequest * HttpRequest::Get(string const & url, CallbackT onFinish, CallbackT onProgress)
-{
- return new MemoryHttpRequest(url, onFinish, onProgress);
-}
-
-HttpRequest * HttpRequest::PostJson(string const & url, string const & postData,
- CallbackT onFinish, CallbackT onProgress)
-{
- return new MemoryHttpRequest(url, postData, onFinish, onProgress);
-}
-
////////////////////////////////////////////////////////////////////////////////////////////////
class FileHttpRequest : public HttpRequest, public IHttpThreadCallback
{
@@ -111,10 +91,11 @@ class FileHttpRequest : public HttpRequest, public IHttpThreadCallback
ChunksDownloadStrategy::ResultT StartThreads()
{
string url;
- int64_t beg, end;
+ ChunksDownloadStrategy::RangeT range;
ChunksDownloadStrategy::ResultT result;
- while ((result = m_strategy.NextChunk(url, beg, end)) == ChunksDownloadStrategy::ENextChunk)
- m_threads.push_back(make_pair(CreateNativeHttpThread(url, *this, beg, end, m_progress.second), beg));
+ while ((result = m_strategy.NextChunk(url, range)) == ChunksDownloadStrategy::ENextChunk)
+ m_threads.push_back(make_pair(CreateNativeHttpThread(url, *this, range.first, range.second,
+ m_progress.second), range.first));
return result;
}
@@ -146,7 +127,7 @@ class FileHttpRequest : public HttpRequest, public IHttpThreadCallback
static threads::ThreadID const id = threads::GetCurrentThreadID();
ASSERT_EQUAL(id, threads::GetCurrentThreadID(), ("OnFinish called from different threads"));
#endif
- m_strategy.ChunkFinished(httpCode == 200, begRange, endRange);
+ m_strategy.ChunkFinished(httpCode == 200, ChunksDownloadStrategy::RangeT(begRange, endRange));
// remove completed chunk from the list, beg is the key
RemoveHttpThreadByKey(begRange);
@@ -252,6 +233,28 @@ public:
}
};
+//////////////////////////////////////////////////////////////////////////////////////////////////////////
+HttpRequest::HttpRequest(CallbackT onFinish, CallbackT onProgress)
+ : m_status(EInProgress), m_progress(make_pair(0, -1)),
+ m_onFinish(onFinish), m_onProgress(onProgress)
+{
+}
+
+HttpRequest::~HttpRequest()
+{
+}
+
+HttpRequest * HttpRequest::Get(string const & url, CallbackT onFinish, CallbackT onProgress)
+{
+ return new MemoryHttpRequest(url, onFinish, onProgress);
+}
+
+HttpRequest * HttpRequest::PostJson(string const & url, string const & postData,
+ CallbackT onFinish, CallbackT onProgress)
+{
+ return new MemoryHttpRequest(url, postData, onFinish, onProgress);
+}
+
HttpRequest * HttpRequest::GetFile(vector<string> const & urls, string const & filePath, int64_t fileSize,
CallbackT onFinish, CallbackT onProgress, int64_t chunkSize)
{