Commit Graph

33 Commits (d6a6b3b28aefb6499c1eb13f0cc5d42f9d0eed3f)

Author SHA1 Message Date
Tatsuhiro Tsujikawa 8897d7ec70 Restart active download to apply previously not applicable options
Previously, we categorized options that can be used in
aria2.changeOption RPC method into 2 categories.  The options in one
category can be applied on the fly, meaning that download continues to
be active while applying options.  Another category includes options
which are only applicable when downloads are waiting or paused.

In this change, when active download is ordered to change options
which only applicable in waiting or paused state, it is now paused,
and then automatically restarted.  Although we have limited number of
download concurrency, the pause and restart is done atomically, and
the download is inserted at the front of the queue, it is picked up
immediately if the concurrency regulation allows.
2016-05-06 18:31:50 +09:00
Tatsuhiro Tsujikawa b1132d6b10 make clang-format using clang-format-3.6 2015-12-27 18:40:08 +09:00
Tatsuhiro Tsujikawa 699f04d0b8 Disable --deferred-input when --save-session is used together
With --deferred-input=true, aria2 only reads input file to fill active
download slots, while keeping input file open.  Meanwhile,
--save-session saves all download info inside memory, but this does
not take into account of unread item in input file.  This will lead to
lose input data in saved session file.  Also current BufferedFile
implementation used to read/write input/output file take a lock on
Windows.  This effectively prevents session serializer from writing
session data to the same file which is still kept open because of
--deferred-input.  See GH-493
2015-11-28 13:02:21 +09:00
Tatsuhiro Tsujikawa d7d5e8570b Include prefs.h instead of typedef PrefPtr everywhere 2013-09-26 00:15:18 +09:00
Nils Maier a76eeb2b81 Introduce PrefPtr typedef 2013-09-19 19:59:33 +02:00
Tatsuhiro Tsujikawa 07d270c87e Require -std=c++11 and use std::shared_ptr instead of SharedHandle 2013-06-22 01:10:38 +09:00
Tatsuhiro Tsujikawa 4070113ef0 Save options directly specified for download in --save-session
This change makes --save-session save only options specified for
download, more specifically, options in command-line, -i file and via
RPC. The other options from conf file and default values are not
saved.  This will drastically decrease the size of session file.
2013-04-11 23:13:21 +09:00
Tatsuhiro Tsujikawa 8b0c701266 Removed trailing spaces 2012-10-01 23:52:22 +09:00
Tatsuhiro Tsujikawa e73c3c53ff Fixed clang warning and errors.
Test for the zero-length array with A2_ARRAY_LEN was commented out
since it is only used in unit test code and clang and old gcc 3.4.3
emit error.
2012-03-01 00:02:29 +09:00
Tatsuhiro Tsujikawa 031f1199d7 Added const to Option::getTable() 2011-12-01 23:36:17 +09:00
Tatsuhiro Tsujikawa 5a29813d24 OptionHandler now knows its option can be used in -i list option,
changeable in aria2.changeOption or aria2.changeGlobalOption.

OptionHandler also now its option is cumulative.
2011-10-22 19:08:20 +09:00
Tatsuhiro Tsujikawa 3832ed97c6 Rewritten Option. Introduced Pref.
Now preference key is Pref instead of just string.  It has Option
ID. Now option lookup and setting takes O(1) using Pref object.
2011-10-21 21:56:42 +09:00
Tatsuhiro Tsujikawa 3879da592d In MinGW32, open file with UNICODE filename and print them in ANSI. 2011-08-04 21:43:02 +09:00
Tatsuhiro Tsujikawa 1372ac51ad 2010-11-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added .cc file for classes/structs that only provided by header
	file. Defined non-POD classes' ctor, dtor in .cc file.  Moved
	implementation code in header file to .cc file for major
	classes/strucsts.
2010-11-14 07:17:55 +00:00
Tatsuhiro Tsujikawa 2b458da480 2010-10-31 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Made #include guard consistent for c++ header files.
2010-10-31 07:23:53 +00:00
Tatsuhiro Tsujikawa ca4940622c 2010-06-21 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Changed naming standards for class member variable: now it looks
	like var_ instead of _var.
2010-06-21 13:51:56 +00:00
Tatsuhiro Tsujikawa 26faa70b3b 2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Renamed member variables.
	* src/Option.cc
	* src/Option.h
2010-06-12 10:09:43 +00:00
Tatsuhiro Tsujikawa 4db349c1f3 2010-01-06 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Untabify. Fixed one line in copyright which is longer than 80
	columns.
	* src
	* test
2010-01-05 16:01:46 +00:00
Tatsuhiro Tsujikawa 26e319df43 2009-12-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added getOption and getGlobalOption XML-RPC method.  getOption
	takes GID as a parameter and returns its options as struct.
	getGlobalOption takes no parameter and returns global
	options. Because global option is used as a template for the
	option of newly added downloads, it includes options returned by
	getOption.
	* src/Option.h
	* src/XmlRpcMethodFactory.cc
	* src/XmlRpcMethodImpl.cc
	* src/XmlRpcMethodImpl.h
2009-12-20 14:33:42 +00:00
Tatsuhiro Tsujikawa 12145ef4c6 2009-11-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added remove().
	* src/Option.cc
	* src/Option.h
2009-11-28 09:08:25 +00:00
Tatsuhiro Tsujikawa 1e6a579258 2008-12-04 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added Option::blank().
	Use !Option::blank(name) instead of Option::defined(name) for
	the options that take filename.
	* src/MultiUrlRequestInfo.cc
	* src/Option.cc
	* src/Option.h
	* src/main.cc
	* src/option_processing.cc
	* test/OptionTest.cc
2008-12-04 13:05:05 +00:00
Tatsuhiro Tsujikawa 3da45c763b 2008-10-04 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Made getAsInt() return int32_t
	* src/Option.h
2008-10-04 14:26:35 +00:00
Tatsuhiro Tsujikawa 0a95211100 2008-05-18 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Made Option::get(...) return const reference of std::string.
	* src/Option.cc
	* src/Option.h
2008-05-18 10:14:53 +00:00
Tatsuhiro Tsujikawa 032c7c2808 2008-03-09 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
type cleanup for allmost all remaining files.
2008-03-09 12:24:01 +00:00
Tatsuhiro Tsujikawa 1b7c198289 2008-02-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Removed "using namespace std;" from all sources. Appended std:: 
prefix to c++
	standard classes.
	Included string.h where mem* function are used.
2008-02-08 15:53:45 +00:00
Tatsuhiro Tsujikawa 6574e44f88 2007-07-21 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Converted int's to in32_t. long long int's are also converted to
	int64_t
2007-07-21 08:56:16 +00:00
Tatsuhiro Tsujikawa 9b73454b07 2007-03-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
To the ability to read options from a config file:
	* src/main.cc: Command-line parameter validation is delegated to
	OptionHandler class.
	* src/OptionHandlerFactory.h, src/OptionHandlerFactory.cc: New 
class.
	* src/Option.h, src/Option.cc (clear): New function.
	* src/OptionParser.h, src/OptionParser.cc: New class.
	* src/OptionHandler.h: New class.
	* src/NameMatchOptionHandler.h: New class.
	* src/OptionHandlerImpl.h: New classes.
	* src/prefs.h: '_' -> '-'
	(FTP_PASV_ENABLED): Renamed to FTP_PASV.
	(FTP_PASV): New definition.
	* src/Util.h, src/Util.cc (getRealSize): New function.
	
	To disable netrc support if .netrc file does not have correct
	permissions:
	* src/File.h, src/File.cc (mode): New function.

	To prevent confidential information to be logged:
	* src/HttpConnection.h, src/HttpConnection.cc
	(eraseConfidentialInfo): New function.
	(sendRequest): Call eraseConfidentialInfo().
	(sendProxyRequest): Call eraseConfidentialInfo().
	* src/main.cc: Validate permissions of .netrc file.
	
	To add --user-agent command-line option:
	* src/main.cc: Added new command line option: --user-agent
	* src/prefs.h (PREF_USER_AGENT): New definition.
	* src/HttpRequestCommand.cc (executeInternal): Set user-agent 
option
	parameter to HttpRequest object.
	
	Marged the patches from Dan Fandrich.
2007-03-26 12:16:57 +00:00
Tatsuhiro Tsujikawa 1b5af8e829 2006-09-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* src/*.{h,cc}:
	Added an exception to the license which allows linking with 
OpenSSL.
2006-09-21 15:31:24 +00:00
Tatsuhiro Tsujikawa 3b2a98393e 2006-08-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
To add --seed-time and --seed-ratio command-line option:
	* src/Option.h (getAsDouble): New function.
	* src/Option.cc (getAsDouble): New function.
	* src/SeedCheckCommand.h: New class.
	* src/SeedCheckCommand.cc: New class.
	* src/DownloadEngineFactory.cc
	(SeedCheckCommand.h): Included.
	(UnionSeedCriteria.h): Included.
	(TimeSeedCriteria.h): Included.
	(ShareRatioSeedCriteria.h): Included.
	(newTorrentConsoleEngine): Added the processing of seed option.
	* src/SeedCriteria.h: New class.
	* src/ShareRatioSeedCriteria.h: New class.
	* src/TimeSeedCriteria.h: New class.
	* src/UnionSeedCriteria.h: New class.
	* src/prefs.h
	(PREF_SEED_TIME): New definition.
	(PREF_SEED_RATIO): New definition.
	* src/main.cc
	(showUsage): Added --seed-time and --seed-ratio option.
	(main): Added --seed-time and --seed-ratio option.
	Made default log file name "/dev/null".
	* src/SharedHandle.h
	(SharedHandle): Copy constructor. Made it assignable from the
	SharedHandle of the subclasses.
	(operator=): Made it assignable from the SharedHandle of the
	subclasses.
	(getRefCount): New function.
	
	To add notice log level and the switch to write log to stdout. 
This
	switch is configurable per log level.
	* src/Logger.h
	(notice): New function.
	(LEVEL): Added NOTICE. Assigned an explicit value to each log 
level
	constant.
	* src/LogFactory.cc
	(getInstance): The use of NullLogger was removed. A log message 
with
	notice log level was made written to stdout along with log file.
	* src/NullLogger.h
	(notice): New function.
	* src/SimpleLogger.h
	(writeHeader): Added the 'file' argument.
	(writeLog): Added the 'file' argument.
	(writeFile): New function.
	(stdoutField): New variable.
	(SimpleLogger): Removed the default constructor.
	(SimpleLogger): Made the default value of logfile 0.
	(debug): Added 'virtual' keyword.
	(info): Added 'virtual' keyword.
	(warn): Added 'virtual' keyword.
	(error): Added 'virtual' keyword.
	(notice): New function.
	(setStdout): New function.
	* src/SimpleLogger.cc
	(WRITE_LOG): Replaced writeLog with writeFile.
	(WRITE_LOG_EX): Replaced writeLog with writeFile.
	(SimpleLogger): Removed the default constructor.
	(setStdout): New function.
	(writeLog): Added the handling of NOTICE log level.
	(writeFile): New function.
	(notice): New function.

	* src/TorrentMan.h: Updated doc.

	* src/BitfieldMan.h: Updated doc.
	
	* src/TrackerWatcherCommand.cc
	(execute): Return true if error occurred in the request to the 
tracker
	and halt is requested.

	* src/TrackerUpdateCommand.cc
	(execute): Return true if error occurred in the request to the 
tracker
	and halt is requested.

	* src/TorrentConsoleDownloadEngine.h
	(onSelectiveDownloadingCompletes): Removed.
	* src/TorrentConsoleDownloadEngine.cc
	(onSelectiveDownloadingCompletes): Removed.
	* src/TorrentDownloadEngine.h
	(onEndOfRun): Added 'virtual' keyword.
	(afterEachIteration): Removed.
	(onSelectiveDownloadingCompletes): Removed.
	* src/TorrentDownloadEngine.cc
	(onEndOfRun): Removed filenameFixed.
	(afterEachIteration): Removed.	
	* src/TorrentMan.cc
	(completePiece): Call onDownloadComplete here.
	(onDownloadComplete): Added 2 log messages.
2006-08-27 12:49:17 +00:00
Tatsuhiro Tsujikawa 9251b47f6c 2006-08-03 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* src/Option.h
	(getAsBool): New function.
	* src/Option.cc
	(prefs.h): Included.
	(defined): 0-length value is now recognized as undefined.
	(getAsInt): Rewritten.
	(getAsLLInt): Rewritten.
	(getAsBool): New function.
	
	* src/FeatureConfig.h: Rewritten.
	* src/FeatureConfig.cc: Rewritten.

	* src/prefs.h
	(PREF_STDOUT_LOG): New definition.
	(PREF_LOG): New definition.
	(PREF_DIR): New definition.
	(PREF_OUT): New definition.
	(PREF_SPLIT): New definition.
	(PREF_DAEMON): New definition.
	(PREF_REFERER): New definition.
	(PREF_TORRENT_FILE): New definition.
	(PREF_LISTEN_PORT): New definition.
	(PREF_METALINK_FILE): New definition.
	(PREF_METALINK_VERSION): New definition.
	(PREF_METALINK_LANGUAGE): New definition.
	(PREF_METALINK_OS): New definition.
	(PREF_METALINK_SERVERS): New definition.

	* src/main.cc
	(main): Following command-line parameters are now put into 
Option
	class: stdoutLog, logfile, dir, ufilename, split, daemonMode,
	referer, torrentFile, metalinkFile, listenPort, metalinkVersion,
	metalinkLanguage, metalinkOs, metalinkServers
	To fix the bug that aria2 can not handle http response header 
properly.
	
	* src/HttpHeader.cc
	(put): Made name lowercased.
	(defined): Made name lowercased.
	(getFirst): Made name lowercased.
	(get): Made name lowercased.
	(getFirstAsInt): Rewritten.
	(getFirstAsLLInt): Rewritten.
2006-08-03 12:36:02 +00:00
Tatsuhiro Tsujikawa 20ba8c707a * Util.{h,cc}: added startsWith().
* CookieBox.cc: rewrited criteriaFind() using Util::startsWith() 
and
	Util::endsWith().
	* SocketCore.cc: struct addrinfo is now  zero-initialized.
	* common.h: added #include directive of limit.h.
	* DownloadEngine.cc: added #include directive of sys/time.h and
	algorithm.
	* Exception.h: added #include directive of stdio.h.
	* AbstractCommand.h: added #include directive of sys/time.h.
	* DownloadCommand.h: added #include directive of sys/time.h.
	* *.h: added #include directive of common.h to all base classes.
	subclasses' one was removed.
2006-02-28 02:25:45 +00:00
Tatsuhiro Tsujikawa ebdb4b86cf 2006-02-22 11:18:47 +00:00
Tatsuhiro Tsujikawa 52634627bc Initial import 2006-02-17 13:35:04 +00:00