diff options
author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2016-01-20 06:31:14 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2016-01-20 06:31:14 +0300 |
commit | 7c4d85348ecbb9913948edc53b82efaa97d85fda (patch) | |
tree | 411379a06b9b668069f8ce6d5dac87b1243fea91 /server/modules/downloaders/curl/src/curl_download.cpp | |
parent | 09a905e401df451f12673d75dc8d4d72ee73b7c9 (diff) |
protocol:
download completed state
client-qt:
added "download completed" subscription and status support
server:
module_curl:
used events api in core for download state changes
core:
download completed event support for modules
Diffstat (limited to 'server/modules/downloaders/curl/src/curl_download.cpp')
-rw-r--r-- | server/modules/downloaders/curl/src/curl_download.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/server/modules/downloaders/curl/src/curl_download.cpp b/server/modules/downloaders/curl/src/curl_download.cpp index 9df06a1..054ce22 100644 --- a/server/modules/downloaders/curl/src/curl_download.cpp +++ b/server/modules/downloaders/curl/src/curl_download.cpp @@ -38,13 +38,15 @@ size_t curl_w_callback(char *ptr, size_t size, size_t nmemb, void *userdata) return size_; } -curl_download::curl_download(std::map<int, std::string> params, core_api *a) +curl_download::curl_download(std::map<int, std::string> params, core_api *a, module_base *m) { //for now we use single transfer connection for url //TODO: support multiple connections in parallel for multithreaded download easy_handle = curl_easy_init(); if(!easy_handle) ; //TODO: handle error + api = a; + module = m; curl_easy_setopt(easy_handle, CURLOPT_URL, params[0].c_str()); //Url as set in module_info curl_easy_setopt(easy_handle, CURLOPT_WRITEFUNCTION, curl_w_callback); @@ -52,7 +54,7 @@ curl_download::curl_download(std::map<int, std::string> params, core_api *a) if(!params[1].empty()) download_path = params[1]; else - download_path = a->get_core_settings()["download_dir"]; + download_path = api->get_core_settings()["download_dir"]; //curl_easy_setopt(h, CURLOPT_DEFAULT_PROTOCOL, "http"); //require curl >= 7.45 @@ -86,7 +88,13 @@ void curl_download::perform_internal() state = core_events::download_error; else state = core_events::download_completed; - //TODO: fire event + std::list<core_events::download_state_info> l; + core_events::download_state_info i; + i.download_id = id; + i.state = state; + l.push_back(i); + api->download_state_changed(module, l); + //TODO: save state } curl_download::~curl_download() |