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-05 22:40:33 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:27:27 +0300
commit2eedf7245c2313e4e237083c672e5a234d44a61b (patch)
treec89c3f0e14e1e37af27c74504be5dee40265c805 /platform/http_request.hpp
parente7d43983e8399ef9f95476fa0e99026f9be8a001 (diff)
[mac][downloader] Added but not activated new implementation, still without chunks
Diffstat (limited to 'platform/http_request.hpp')
-rw-r--r--platform/http_request.hpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/platform/http_request.hpp b/platform/http_request.hpp
new file mode 100644
index 0000000000..432214aa6c
--- /dev/null
+++ b/platform/http_request.hpp
@@ -0,0 +1,63 @@
+#pragma once
+
+#include "../std/function.hpp"
+#include "../std/string.hpp"
+#include "../std/list.hpp"
+#include "../std/utility.hpp"
+
+#include "http_request_impl_callback.hpp"
+
+class Writer;
+class HttpRequestImpl;
+
+namespace downloader
+{
+
+/// Request will be canceled on delete
+class HttpRequest : public IHttpRequestImplCallback
+{
+public:
+ enum StatusT
+ {
+ EInProgress,
+ ECompleted,
+ EFailed
+ };
+
+ /// <current, total>, total can be -1 if size is unknown
+ typedef pair<int64_t, int64_t> ProgressT;
+
+ typedef function<void(HttpRequest &)> CallbackT;
+
+private:
+ StatusT m_status;
+ ProgressT m_progress;
+ Writer & m_writer;
+ CallbackT m_onFinish;
+ CallbackT m_onProgress;
+
+ typedef list<HttpRequestImpl *> ThreadsContainerT;
+ ThreadsContainerT m_threads;
+
+ explicit HttpRequest(Writer & writer, CallbackT onFinish, CallbackT onProgress);
+
+ /// @name Callbacks for internal native downloading threads
+ //@{
+ virtual void OnWrite(int64_t offset, void const * buffer, size_t size);
+ virtual void OnFinish(long httpCode, int64_t begRange, int64_t endRange);
+ //@}
+
+public:
+ virtual ~HttpRequest();
+
+ StatusT Status() const { return m_status; }
+ ProgressT Progress() const { return m_progress; }
+
+ static HttpRequest * Get(string const & url, Writer & writer, CallbackT onFinish,
+ CallbackT onProgress = CallbackT());
+ /// Content-type is always "application/json"
+ static HttpRequest * Post(string const & url, Writer & writer, string const & postData,
+ CallbackT onFinish, CallbackT onProgress = CallbackT());
+};
+
+} // namespace downloader