From 7c4d85348ecbb9913948edc53b82efaa97d85fda Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Wed, 20 Jan 2016 06:31:14 +0300 Subject: 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 --- server/modules/downloaders/curl/src/curl_download.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'server/modules/downloaders/curl/src') 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 params, core_api *a) +curl_download::curl_download(std::map 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 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 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() -- cgit v1.2.3