diff options
| -rwxr-xr-x | doc/xmlrpc/aria2rpc | 1 | ||||
| -rw-r--r-- | src/BtPostDownloadHandler.cc | 11 | ||||
| -rw-r--r-- | src/MetalinkPostDownloadHandler.cc | 11 | ||||
| -rw-r--r-- | src/OptionHandlerFactory.cc | 13 | ||||
| -rw-r--r-- | src/UTMetadataPostDownloadHandler.cc | 11 | ||||
| -rw-r--r-- | src/prefs.cc | 2 | ||||
| -rw-r--r-- | src/prefs.h | 2 | ||||
| -rw-r--r-- | src/usage_text.h | 11 |
8 files changed, 62 insertions, 0 deletions
diff --git a/doc/xmlrpc/aria2rpc b/doc/xmlrpc/aria2rpc index 5b47e0cc..934fbdbc 100755 --- a/doc/xmlrpc/aria2rpc +++ b/doc/xmlrpc/aria2rpc @@ -232,6 +232,7 @@ OptionParser.new do |opt| opt.on("--server-stat-of FILE"){|val| options["server-stat-of"]=val} opt.on("--save-cookies FILE"){|val| options["save-cookies"]=val} opt.on("--gid GID"){|val| options["gid"]=val} + opt.on("--pause-metadata [BOOL]",["true","false"]){|val| options["pause-metadata"]=val||"true"} opt.on("--server SERVER", "hostname of XML-RPC server. Default: localhost"){|val| options["server"]=val } opt.on("--port PORT", "port of XML-RPC server. Default: 6800"){|val| options["port"]=val } diff --git a/src/BtPostDownloadHandler.cc b/src/BtPostDownloadHandler.cc index 9639a6da..4f64b3a4 100644 --- a/src/BtPostDownloadHandler.cc +++ b/src/BtPostDownloadHandler.cc @@ -52,6 +52,7 @@ #include "DiskWriter.h" #include "AbstractSingleDiskAdaptor.h" #include "BencodeDiskWriter.h" +#include "RequestGroupMan.h" namespace aria2 { @@ -108,6 +109,16 @@ void BtPostDownloadHandler::getNextRequestGroups if(mi) { setMetadataInfo(newRgs.begin(), newRgs.end(), mi); } + + auto rgman = requestGroup->getRequestGroupMan(); + + if(rgman && rgman->getKeepRunning() && + requestGroup->getOption()->getAsBool(PREF_PAUSE_METADATA)) { + for(auto& rg : newRgs) { + rg->setPauseRequested(true); + } + } + groups.insert(groups.end(), newRgs.begin(), newRgs.end()); } diff --git a/src/MetalinkPostDownloadHandler.cc b/src/MetalinkPostDownloadHandler.cc index 44696084..99989e09 100644 --- a/src/MetalinkPostDownloadHandler.cc +++ b/src/MetalinkPostDownloadHandler.cc @@ -51,6 +51,7 @@ #include "download_helper.h" #include "fmt.h" #include "FileEntry.h" +#include "RequestGroupMan.h" namespace aria2 { @@ -105,6 +106,16 @@ void MetalinkPostDownloadHandler::getNextRequestGroups if(mi) { setMetadataInfo(newRgs.begin(), newRgs.end(), mi); } + + auto rgman = requestGroup->getRequestGroupMan(); + + if(rgman && rgman->getKeepRunning() && + requestGroup->getOption()->getAsBool(PREF_PAUSE_METADATA)) { + for(auto& rg : newRgs) { + rg->setPauseRequested(true); + } + } + groups.insert(groups.end(), newRgs.begin(), newRgs.end()); diskAdaptor->closeFile(); } catch(Exception& e) { diff --git a/src/OptionHandlerFactory.cc b/src/OptionHandlerFactory.cc index a08e6634..409f2eab 100644 --- a/src/OptionHandlerFactory.cc +++ b/src/OptionHandlerFactory.cc @@ -681,6 +681,19 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers() } { OptionHandler* op(new BooleanOptionHandler + (PREF_PAUSE_METADATA, + TEXT_PAUSE_METADATA, + A2_V_FALSE, + OptionHandler::OPT_ARG)); + op->addTag(TAG_ADVANCED); + op->addTag(TAG_RPC); + op->setInitialOption(true); + op->setChangeGlobalOption(true); + op->setChangeOptionForReserved(true); + handlers.push_back(op); + } + { + OptionHandler* op(new BooleanOptionHandler (PREF_QUIET, TEXT_QUIET, A2_V_FALSE, diff --git a/src/UTMetadataPostDownloadHandler.cc b/src/UTMetadataPostDownloadHandler.cc index ff006d8a..3d48f135 100644 --- a/src/UTMetadataPostDownloadHandler.cc +++ b/src/UTMetadataPostDownloadHandler.cc @@ -50,6 +50,7 @@ #include "prefs.h" #include "Option.h" #include "fmt.h" +#include "RequestGroupMan.h" namespace aria2 { @@ -107,6 +108,16 @@ void UTMetadataPostDownloadHandler::getNextRequestGroups setMetadataInfo(newRgs.begin(), newRgs.end(), requestGroup->getMetadataInfo()); } + + auto rgman = requestGroup->getRequestGroupMan(); + + if(rgman && rgman->getKeepRunning() && + requestGroup->getOption()->getAsBool(PREF_PAUSE_METADATA)) { + for(auto& rg : newRgs) { + rg->setPauseRequested(true); + } + } + groups.insert(groups.end(), newRgs.begin(), newRgs.end()); } } diff --git a/src/prefs.cc b/src/prefs.cc index 2ffc976c..8367f38d 100644 --- a/src/prefs.cc +++ b/src/prefs.cc @@ -363,6 +363,8 @@ PrefPtr PREF_ENABLE_COLOR = makePref("enable-color"); PrefPtr PREF_RPC_SECRET = makePref("rpc-secret"); // values: 1*digit PrefPtr PREF_DSCP = makePref("dscp"); +// values: true | false +PrefPtr PREF_PAUSE_METADATA = makePref("pause-metadata"); /** * FTP related preferences diff --git a/src/prefs.h b/src/prefs.h index 592bad9a..dfdb9494 100644 --- a/src/prefs.h +++ b/src/prefs.h @@ -300,6 +300,8 @@ extern PrefPtr PREF_ENABLE_COLOR; extern PrefPtr PREF_RPC_SECRET; // values: 1*digit extern PrefPtr PREF_DSCP; +// values: true | false +extern PrefPtr PREF_PAUSE_METADATA; /** * FTP related preferences diff --git a/src/usage_text.h b/src/usage_text.h index 15a13f1d..8bb25dff 100644 --- a/src/usage_text.h +++ b/src/usage_text.h @@ -980,3 +980,14 @@ " commonly used values from RFC, network vendors'\n" \ " documentation, Wikipedia or any other source,\n" \ " use them as they are.") +#define TEXT_PAUSE_METADATA \ + _(" --pause-metadata[=true|false]\n" \ + " Pause downloads created as a result of metadata\n" \ + " download. There are 3 types of metadata\n" \ + " downloads in aria2: (1) downloading .torrent\n" \ + " file. (2) downloading torrent metadata using\n" \ + " magnet link. (3) downloading metalink file.\n" \ + " These metadata downloads will generate downloads\n" \ + " using their metadata. This option pauses these\n" \ + " subsequent downloads. This option is effective\n" \ + " only when --enable-rpc=true is given.") |
