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
pull/1/head
Tatsuhiro Tsujikawa 2008-07-08 14:18:51 +00:00
parent 1059b8b951
commit d8d8a4cff1
8 changed files with 49 additions and 7 deletions

View File

@ -1,3 +1,15 @@
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
2008-07-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Updated DESCRIPTION of man page.

View File

@ -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
{

View File

@ -142,6 +142,7 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers()
std::deque<std::string>(&params[0],
&params[arrayLength(params)]))));
}
handlers.push_back(SH(new BooleanOptionHandler(PREF_BT_SEED)));
return handlers;
}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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 \