summaryrefslogtreecommitdiff
path: root/server/modules/downloaders/curl/src/curl_download.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2016-01-20 06:31:14 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2016-01-20 06:31:14 +0300
commit7c4d85348ecbb9913948edc53b82efaa97d85fda (patch)
tree411379a06b9b668069f8ce6d5dac87b1243fea91 /server/modules/downloaders/curl/src/curl_download.cpp
parent09a905e401df451f12673d75dc8d4d72ee73b7c9 (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.cpp14
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()