diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-07-06 19:26:30 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-07-06 19:26:30 +0900 |
| commit | f83b0fcfa38cf80b15b275d48c131fa691d3006b (patch) | |
| tree | 464a9467114deb7dd3382ff92f1db6183ecd50bc | |
| parent | 162c138362955eede9ca8ec2e4b5e804688eda32 (diff) | |
Refactor MultiUrlRequestInfo ctor
StatCalc creation is moved to MultiUrlRequestInfo. The summary output
is done only when PREF_QUIET is false and it is always to
global::cout(), so remove summaryOut_ and just use global::cout() in
that case. Also use std::unique_ptr for statCalc_ in DownloadEngine.
| -rw-r--r-- | src/Context.cc | 31 | ||||
| -rw-r--r-- | src/DownloadEngine.cc | 4 | ||||
| -rw-r--r-- | src/DownloadEngine.h | 4 | ||||
| -rw-r--r-- | src/MultiUrlRequestInfo.cc | 48 | ||||
| -rw-r--r-- | src/MultiUrlRequestInfo.h | 8 |
5 files changed, 39 insertions, 56 deletions
diff --git a/src/Context.cc b/src/Context.cc index bef22e54..1d1bb315 100644 --- a/src/Context.cc +++ b/src/Context.cc @@ -57,8 +57,6 @@ #include "Platform.h" #include "FileEntry.h" #include "RequestGroup.h" -#include "ConsoleStatCalc.h" -#include "NullStatCalc.h" #include "download_helper.h" #include "Exception.h" #include "ProtocolDetector.h" @@ -66,7 +64,6 @@ #include "SocketCore.h" #include "DownloadContext.h" #include "fmt.h" -#include "NullOutputFile.h" #include "console.h" #include "UriListParser.h" #ifdef ENABLE_BITTORRENT @@ -85,31 +82,6 @@ extern int optind, opterr, optopt; namespace aria2 { -std::shared_ptr<StatCalc> getStatCalc(const std::shared_ptr<Option>& op) -{ - std::shared_ptr<StatCalc> statCalc; - if(op->getAsBool(PREF_QUIET)) { - statCalc.reset(new NullStatCalc()); - } else { - std::shared_ptr<ConsoleStatCalc> impl - (new ConsoleStatCalc(op->getAsInt(PREF_SUMMARY_INTERVAL), - op->getAsBool(PREF_HUMAN_READABLE))); - impl->setReadoutVisibility(op->getAsBool(PREF_SHOW_CONSOLE_READOUT)); - impl->setTruncate(op->getAsBool(PREF_TRUNCATE_CONSOLE_READOUT)); - statCalc = impl; - } - return statCalc; -} - -std::shared_ptr<OutputFile> getSummaryOut(const std::shared_ptr<Option>& op) -{ - if(op->getAsBool(PREF_QUIET)) { - return std::shared_ptr<OutputFile>(new NullOutputFile()); - } else { - return global::cout(); - } -} - #ifdef ENABLE_BITTORRENT namespace { void showTorrentFile(const std::string& uri) @@ -281,8 +253,7 @@ Context::Context(bool standalone, global::cout()->printf("%s\n", MSG_NO_FILES_TO_DOWNLOAD); } else { reqinfo.reset(new MultiUrlRequestInfo(std::move(requestGroups), - op, getStatCalc(op), - getSummaryOut(op), + op, uriListParser)); } } diff --git a/src/DownloadEngine.cc b/src/DownloadEngine.cc index 3f5d4484..62fb9d66 100644 --- a/src/DownloadEngine.cc +++ b/src/DownloadEngine.cc @@ -251,9 +251,9 @@ void DownloadEngine::requestForceHalt() requestGroupMan_->forceHalt(); } -void DownloadEngine::setStatCalc(const std::shared_ptr<StatCalc>& statCalc) +void DownloadEngine::setStatCalc(std::unique_ptr<StatCalc> statCalc) { - statCalc_ = statCalc; + statCalc_ = std::move(statCalc); } #ifdef ENABLE_ASYNC_DNS diff --git a/src/DownloadEngine.h b/src/DownloadEngine.h index 4f05204d..efc9fcc4 100644 --- a/src/DownloadEngine.h +++ b/src/DownloadEngine.h @@ -82,7 +82,7 @@ private: std::shared_ptr<EventPoll> eventPoll_; - std::shared_ptr<StatCalc> statCalc_; + std::unique_ptr<StatCalc> statCalc_; int haltRequested_; @@ -235,7 +235,7 @@ public: option_ = op; } - void setStatCalc(const std::shared_ptr<StatCalc>& statCalc); + void setStatCalc(std::unique_ptr<StatCalc> statCalc); bool isHaltRequested() const { diff --git a/src/MultiUrlRequestInfo.cc b/src/MultiUrlRequestInfo.cc index 546320a1..4135bc3e 100644 --- a/src/MultiUrlRequestInfo.cc +++ b/src/MultiUrlRequestInfo.cc @@ -50,7 +50,8 @@ #include "message.h" #include "util.h" #include "Option.h" -#include "StatCalc.h" +#include "ConsoleStatCalc.h" +#include "NullStatCalc.h" #include "CookieStorage.h" #include "File.h" #include "Netrc.h" @@ -59,10 +60,11 @@ #include "TimeA2.h" #include "fmt.h" #include "SocketCore.h" -#include "OutputFile.h" +#include "NullOutputFile.h" #include "UriListParser.h" #include "SingletonHolder.h" #include "Notifier.h" +#include "console.h" #ifdef ENABLE_WEBSOCKET # include "WebSocketSessionMan.h" #else // !ENABLE_WEBSOCKET @@ -103,16 +105,30 @@ void handler(int signal) { } } // namespace +namespace { + +std::unique_ptr<StatCalc> getStatCalc(const std::shared_ptr<Option>& op) +{ + if(op->getAsBool(PREF_QUIET)) { + return make_unique<NullStatCalc>(); + } else { + auto impl = make_unique<ConsoleStatCalc> + (op->getAsInt(PREF_SUMMARY_INTERVAL), + op->getAsBool(PREF_HUMAN_READABLE)); + impl->setReadoutVisibility(op->getAsBool(PREF_SHOW_CONSOLE_READOUT)); + impl->setTruncate(op->getAsBool(PREF_TRUNCATE_CONSOLE_READOUT)); + return std::move(impl); + } +} + +} // namespace + MultiUrlRequestInfo::MultiUrlRequestInfo (std::vector<std::shared_ptr<RequestGroup> > requestGroups, const std::shared_ptr<Option>& op, - const std::shared_ptr<StatCalc>& statCalc, - const std::shared_ptr<OutputFile>& summaryOut, const std::shared_ptr<UriListParser>& uriListParser) : requestGroups_(std::move(requestGroups)), option_(op), - statCalc_(statCalc), - summaryOut_(summaryOut), uriListParser_(uriListParser), useSignalHandler_(true) { @@ -127,10 +143,12 @@ MultiUrlRequestInfo::~MultiUrlRequestInfo() {} void MultiUrlRequestInfo::printMessageForContinue() { - summaryOut_->printf - ("\n%s\n%s\n", - _("aria2 will resume download if the transfer is restarted."), - _("If there are any errors, then see the log file. See '-l' option in help/man page for details.")); + if(!option_->getAsBool(PREF_QUIET)) { + global::cout()->printf + ("\n%s\n%s\n", + _("aria2 will resume download if the transfer is restarted."), + _("If there are any errors, then see the log file. See '-l' option in help/man page for details.")); + } } int MultiUrlRequestInfo::prepare() @@ -242,7 +260,7 @@ int MultiUrlRequestInfo::prepare() e_->getRequestGroupMan()->removeStaleServerStat (option_->getAsInt(PREF_SERVER_STAT_TIMEOUT)); } - e_->setStatCalc(statCalc_); + e_->setStatCalc(getStatCalc(option_)); if(uriListParser_) { e_->getRequestGroupMan()->setUriListParser(uriListParser_); } @@ -271,9 +289,11 @@ error_code::Value MultiUrlRequestInfo::getResult() if(!serverStatOf.empty()) { e_->getRequestGroupMan()->saveServerStat(serverStatOf); } - e_->getRequestGroupMan()->showDownloadResults - (*summaryOut_, option_->get(PREF_DOWNLOAD_RESULT) == A2_V_FULL); - summaryOut_->flush(); + if(!option_->getAsBool(PREF_QUIET)) { + e_->getRequestGroupMan()->showDownloadResults + (*global::cout(), option_->get(PREF_DOWNLOAD_RESULT) == A2_V_FULL); + global::cout()->flush(); + } RequestGroupMan::DownloadStat s = e_->getRequestGroupMan()->getDownloadStat(); diff --git a/src/MultiUrlRequestInfo.h b/src/MultiUrlRequestInfo.h index 9013c1fb..2395ada1 100644 --- a/src/MultiUrlRequestInfo.h +++ b/src/MultiUrlRequestInfo.h @@ -49,8 +49,6 @@ namespace aria2 { class RequestGroup; class Option; -class StatCalc; -class OutputFile; class UriListParser; class DownloadEngine; @@ -60,10 +58,6 @@ private: std::shared_ptr<Option> option_; - std::shared_ptr<StatCalc> statCalc_; - - std::shared_ptr<OutputFile> summaryOut_; - std::shared_ptr<UriListParser> uriListParser_; std::shared_ptr<DownloadEngine> e_; @@ -83,8 +77,6 @@ public: MultiUrlRequestInfo (std::vector<std::shared_ptr<RequestGroup> > requestGroups, const std::shared_ptr<Option>& op, - const std::shared_ptr<StatCalc>& statCalc, - const std::shared_ptr<OutputFile>& summaryOut, const std::shared_ptr<UriListParser>& uriListParser); ~MultiUrlRequestInfo(); |
