reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/download.cpp | 25++++++++++++-------------
Msrc/download.hpp | 1-
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;