commit d0b026fcfdfd83474e124fee2ec94111a6a933e7
parent f48d25aa675419c80aa760658505c6f04d8b8a63
Author: cfillion <cfillion@users.noreply.github.com>
Date: Mon, 6 Feb 2017 15:27:39 -0500
download: abort early if cancelled before startup
Diffstat:
2 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/src/download.cpp b/src/download.cpp
@@ -76,12 +76,7 @@ size_t Download::WriteData(char *ptr, size_t rawsize, size_t nmemb, void *data)
int Download::UpdateProgress(void *ptr, const double, const double,
const double, const double)
{
- Download *dl = static_cast<Download *>(ptr);
-
- if(dl->isAborted())
- return 1;
-
- return 0;
+ return static_cast<Download *>(ptr)->isAborted();
}
Download::Download(const string &name, const string &url,
@@ -105,13 +100,6 @@ void Download::reset()
m_contents.clear();
}
-void Download::finish(const State state, const string &contents)
-{
- m_contents = contents;
-
- DownloadNotifier::get()->notify({this, state});
-}
-
void Download::setState(const State state)
{
m_state = state;
@@ -140,6 +128,17 @@ void Download::start()
void Download::exec(CURL *curl)
{
+ const auto finish = [&](const State state, const string &contents) {
+ m_contents = contents;
+
+ DownloadNotifier::get()->notify({this, state});
+ };
+
+ if(isAborted()) {
+ finish(Aborted, "cancelled");
+ return;
+ }
+
DownloadNotifier::get()->notify({this, Running});
string contents;
diff --git a/src/download.hpp b/src/download.hpp
@@ -80,7 +80,6 @@ private:
static size_t WriteData(char *, size_t, size_t, void *);
static int UpdateProgress(void *, double, double, double, double);
- void finish(const State state, const std::string &contents);
void reset();
std::string m_name;