diff options
author | Alex Zolotarev <deathbaba@gmail.com> | 2011-11-05 22:40:33 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:27:27 +0300 |
commit | 2eedf7245c2313e4e237083c672e5a234d44a61b (patch) | |
tree | c89c3f0e14e1e37af27c74504be5dee40265c805 /platform/http_request.hpp | |
parent | e7d43983e8399ef9f95476fa0e99026f9be8a001 (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.hpp | 63 |
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 |