diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-07-08 14:18:51 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-07-08 14:18:51 +0000 |
| commit | d8d8a4cff1486ef82f808388926e49a4ab4e6bb0 (patch) | |
| tree | a94786f3d79bfc57bf262a987686ed780b3e4cdb /src | |
| parent | 1059b8b9518ac3739c2f387dc291d54bece23f7e (diff) | |
2008-07-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added --bt-seed option. If --bt-seed=true is given at the
command-line,
aria2 seeds previously downloaded files without validating
piece hashs.
* src/HelpItemFactory.cc
* src/OptionHandlerFactory.cc
* src/RequestGroup.cc
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
Diffstat (limited to 'src')
| -rw-r--r-- | src/HelpItemFactory.cc | 7 | ||||
| -rw-r--r-- | src/OptionHandlerFactory.cc | 1 | ||||
| -rw-r--r-- | src/RequestGroup.cc | 22 | ||||
| -rw-r--r-- | src/option_processing.cc | 7 | ||||
| -rw-r--r-- | src/prefs.cc | 2 | ||||
| -rw-r--r-- | src/prefs.h | 2 | ||||
| -rw-r--r-- | src/usage_text.h | 3 |
7 files changed, 37 insertions, 7 deletions
diff --git a/src/HelpItemFactory.cc b/src/HelpItemFactory.cc index e230b19a..29c8cf32 100644 --- a/src/HelpItemFactory.cc +++ b/src/HelpItemFactory.cc @@ -390,6 +390,13 @@ TagContainerHandle HelpItemFactory::createHelpItems(const Option* op) item->addTag(TAG_BITTORRENT); tc->addItem(item); } + { + HelpItemHandle item(new HelpItem(PREF_BT_SEED, + TEXT_BT_SEED, + op->get(PREF_BT_SEED))); + item->addTag(TAG_BITTORRENT); + tc->addItem(item); + } #endif // ENABLE_BITTORRENT #ifdef ENABLE_METALINK { diff --git a/src/OptionHandlerFactory.cc b/src/OptionHandlerFactory.cc index 78a9acc0..afeb53a0 100644 --- a/src/OptionHandlerFactory.cc +++ b/src/OptionHandlerFactory.cc @@ -142,6 +142,7 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers() std::deque<std::string>(¶ms[0], ¶ms[arrayLength(params)])))); } + handlers.push_back(SH(new BooleanOptionHandler(PREF_BT_SEED))); return handlers; } diff --git a/src/RequestGroup.cc b/src/RequestGroup.cc index 84222272..b8fad1d6 100644 --- a/src/RequestGroup.cc +++ b/src/RequestGroup.cc @@ -239,15 +239,19 @@ void RequestGroup::createInitialCommand(std::deque<Command*>& commands, } else { if(_pieceStorage->getDiskAdaptor()->fileExists()) { if(!_option->getAsBool(PREF_CHECK_INTEGRITY) && - !_option->getAsBool(PREF_ALLOW_OVERWRITE)) { + !_option->getAsBool(PREF_ALLOW_OVERWRITE) && + !_option->getAsBool(PREF_BT_SEED)) { // TODO we need this->haltRequested = true? throw DownloadFailureException - (StringFormat(MSG_FILE_ALREADY_EXISTS, - _pieceStorage->getDiskAdaptor()->getFilePath().c_str() - ).str()); + (StringFormat + (MSG_FILE_ALREADY_EXISTS, + _pieceStorage->getDiskAdaptor()->getFilePath().c_str()).str()); } else { _pieceStorage->getDiskAdaptor()->openFile(); } + if(_option->getAsBool(PREF_BT_SEED)) { + _pieceStorage->markAllPiecesDone(); + } } else { _pieceStorage->getDiskAdaptor()->openFile(); } @@ -269,8 +273,14 @@ void RequestGroup::createInitialCommand(std::deque<Command*>& commands, } } CheckIntegrityEntryHandle entry(new BtCheckIntegrityEntry(this)); - - processCheckIntegrityEntry(commands, entry, e); + // --bt-seed=true is given and download has completed, skip validation for + // piece hashes. + if(_option->getAsBool(PREF_BT_SEED) && + _pieceStorage->downloadFinished()) { + entry->onDownloadFinished(commands, e); + } else { + processCheckIntegrityEntry(commands, entry, e); + } return; } } diff --git a/src/option_processing.cc b/src/option_processing.cc index 3dcd034e..8d8eda35 100644 --- a/src/option_processing.cc +++ b/src/option_processing.cc @@ -145,6 +145,7 @@ Option* createDefaultOption() op->put(PREF_BT_REQUIRE_CRYPTO, V_FALSE); op->put(PREF_BT_REQUEST_PEER_SPEED_LIMIT, "51200"); op->put(PREF_BT_MAX_OPEN_FILES, "100"); + op->put(PREF_BT_SEED, V_FALSE); op->put(PREF_QUIET, V_FALSE); op->put(PREF_STOP, "0"); #ifdef ENABLE_ASYNC_DNS @@ -255,7 +256,8 @@ Option* option_processing(int argc, char* const argv[]) { PREF_BT_MIN_CRYPTO_LEVEL.c_str(), required_argument, &lopt, 30 }, { PREF_BT_REQUIRE_CRYPTO.c_str(), required_argument, &lopt, 31 }, { PREF_BT_REQUEST_PEER_SPEED_LIMIT.c_str(), required_argument, &lopt, 32 }, - { PREF_BT_MAX_OPEN_FILES.c_str(), required_argument, &lopt, 33}, + { PREF_BT_MAX_OPEN_FILES.c_str(), required_argument, &lopt, 33 }, + { PREF_BT_SEED.c_str(), optional_argument, &lopt, 34 }, #endif // ENABLE_BITTORRENT #ifdef ENABLE_METALINK { PREF_METALINK_FILE.c_str(), required_argument, NULL, 'M' }, @@ -372,6 +374,9 @@ Option* option_processing(int argc, char* const argv[]) case 33: cmdstream << PREF_BT_MAX_OPEN_FILES << "=" << optarg << "\n"; break; + case 34: + cmdstream << PREF_BT_SEED << "=" << toBoolArg(optarg) << "\n"; + break; case 100: cmdstream << PREF_METALINK_VERSION << "=" << optarg << "\n"; break; diff --git a/src/prefs.cc b/src/prefs.cc index 86548f46..f7cbf79a 100644 --- a/src/prefs.cc +++ b/src/prefs.cc @@ -251,6 +251,8 @@ const std::string PREF_BT_REQUIRE_CRYPTO("bt-require-crypto"); const std::string PREF_BT_REQUEST_PEER_SPEED_LIMIT("bt-request-peer-speed-limit"); // values: 1*digit const std::string PREF_BT_MAX_OPEN_FILES("bt-max-open-files"); +// values: true | false +const std::string PREF_BT_SEED("bt-seed"); /** * Metalink related preferences diff --git a/src/prefs.h b/src/prefs.h index 6e87813a..43e9e057 100644 --- a/src/prefs.h +++ b/src/prefs.h @@ -255,6 +255,8 @@ extern const std::string PREF_BT_REQUIRE_CRYPTO; extern const std::string PREF_BT_REQUEST_PEER_SPEED_LIMIT; // values: 1*digit extern const std::string PREF_BT_MAX_OPEN_FILES; +// values: true | false +extern const std::string PREF_BT_SEED; /** * Metalink related preferences diff --git a/src/usage_text.h b/src/usage_text.h index 8377e0df..19fa3e02 100644 --- a/src/usage_text.h +++ b/src/usage_text.h @@ -284,6 +284,9 @@ _(" --bt-request-peer-speed-limit=SPEED In BitTorrent downloads, if the download #define TEXT_BT_MAX_OPEN_FILES \ _(" --bt-max-open-files=NUM Specify maximum number of files to open in each\n"\ " BitTorrent download.") +#define TEXT_BT_SEED \ +_(" --bt-seed[=true|false] Seed previously downloaded files without\n"\ + " validating piece hashes.") #define TEXT_METALINK_FILE \ _(" -M, --metalink-file=METALINK_FILE The file path to the .metalink file.") #define TEXT_METALINK_SERVERS \ |
