Commit Graph

62 Commits (0ecfa19925453e3e4bf8ca947dc72a597654e401)

Author SHA1 Message Date
Tatsuhiro Tsujikawa 0ecfa19925 Reworked download/upload statistics calculation
The old implementation calculates download/upload statistics for a
RequestGroup by summing up all PeerStat objects. For global
statistics, those are summed together. This clearly incurs runtime
penalty and we introduced some kind of caching which updates
statistics every 250ms but it did not work right.

This change removes all these aggregation code, and instead makes
RequestGroup and RequestGroupMan objects hold NetStat object and
download/upload bytes are directly calculated by thier own NetStat.
This is far more simplar than the old way and less runtime penalty and
brings more accuracy.
2012-10-25 23:33:45 +09:00
Tatsuhiro Tsujikawa 3258614033 Removed *Handle typedef 2012-09-28 23:27:46 +09:00
Tatsuhiro Tsujikawa d8c44fe9e8 Use const char* instead of static const std::string 2012-09-24 23:20:43 +09:00
Tatsuhiro Tsujikawa 2795176d79 Add GID => RequestGroup index for faster access to RequestGroup 2012-07-31 23:55:51 +09:00
Tatsuhiro Tsujikawa 329a17b3f9 Removed tailing whitespaces 2012-07-31 21:26:59 +09:00
Tatsuhiro Tsujikawa f2d55f0edc Added --deferred-input option.
If true is given to --deferred-input option, aria2 does not read all
URIs and options from file specified by -i option at startup, but it
reads one by one when it needs later. This may reduce memory usage if
input file contains a lot of URIs to download. If false is given,
aria2 reads all URIs and options at startup. This option defaults to
false.
2012-02-05 18:57:16 +09:00
Tatsuhiro Tsujikawa 7989cd898d Use int or int32_t instead of size_t where suitable 2011-12-09 21:39:43 +09:00
Tatsuhiro Tsujikawa f0bcfa822e Use int instead of unsigned int where unsigned int is not needed. 2011-12-09 21:39:43 +09:00
Tatsuhiro Tsujikawa 1872aef953 Made --max-download-result option available in aria2.changeGlobalOption. 2011-10-22 22:43:07 +09:00
Tatsuhiro Tsujikawa f7aeb86ccc Added --download-result option.
Added --download-result=OPT option.  This option changes the way
"Download Results" is formatted. If OPT is 'default', print GID,
status, average download speed and path/URI. If multiple files are
involved, path/URI of first requested file is printed and remaining
ones are omitted.  If OPT is 'full', print GID, status, average
download speed, percentage of progress and path/URI. The percentage of
progress and path/URI are printed for each requested file in each row.
2011-08-22 23:05:06 +09:00
Tatsuhiro Tsujikawa a10cda2f17 Use global::cout to output string to stdout.
In MinGW32 build, global::cout is WinConsoleFile. When outputing to
console, it uses WriteConsoleW, so Unicode characters are written.
Fixed memory leak in WChar<->MultiByte conversion functions.  The
portion of code which uses std::cout is rewritten to use global::cout.
2011-08-09 23:33:55 +09:00
Tatsuhiro Tsujikawa 2906484345 Use ServerStat to find faster server. 2011-06-28 00:21:29 +09:00
Tatsuhiro Tsujikawa 4784114281 Don't save removed download in --save-session text file.
Now stat column of removed downloads in Download Results is 'RM'
instead of INPR.
2011-05-29 20:59:45 +09:00
Tatsuhiro Tsujikawa 6e818a06dc Replaced gid_t with a2_gid_t cause gid_t is commonly used as group ID. 2011-03-17 12:17:46 +09:00
Tatsuhiro Tsujikawa 3ddb68f340 Deprecated --enable-xml-rpc and --xml-rpc-* option. Introduced
--enable-rpc and --rpc-* option instead.

--enable-xml-rpc and --xml-rpc-* option can be used but warning
message will be shown. The help tag #xml-rpc was replaced with #rpc.
2011-03-14 21:02:25 +09:00
Tatsuhiro Tsujikawa fe40876546 Added aria2.removeDownloadResult XML-RPC method.
The method signature is aria2.removeDownloadResult(gid).  This method
removes completed/error/removed download denoted by gid from
memory. This method returns "OK" for success.
2011-01-20 00:56:34 +09:00
Tatsuhiro Tsujikawa 947967fc63 Renamed DownloadErrorCode.h as error_code.h. Renamed
downloaderrorcode::Value as error_code::Value.
2010-11-28 16:52:02 +09:00
Tatsuhiro Tsujikawa 580098eb49 2010-11-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Rewritten Logger interface. Logger now writes source file name and
	line number in log file.
2010-11-20 08:21:36 +00: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 f26685ded1 2010-09-10 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added --max-download-result=NUM option. This option sets maximum
	number of download result kept in memory. The download results are
	completed/error/ removed downloads. The download results are
	stored in FIFO queue and it can store at most NUM download
	results. When queue is full and new download result is created,
	oldest download result is removed from the front of the queue and
	new one is pushed to the back. Setting big number in this option
	may result high memory consumption after thousands of
	downloads. Specifying 0 means no download result is kept.  Default
	value is 1000.
	* src/OptionHandlerFactory.cc
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/prefs.cc
	* src/prefs.h
	* src/usage_text.h
2010-09-10 14:13:50 +00:00
Tatsuhiro Tsujikawa 55d98cff0b 2010-07-15 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
FeedbackURISelector now tries to select URI whose host is least
	used in aria2 globally. Reverted the previous change.
	* src/AdaptiveURISelector.cc
	* src/AdaptiveURISelector.h
	* src/CreateRequestCommand.cc
	* src/FeedbackURISelector.cc
	* src/FeedbackURISelector.h
	* src/FileEntry.cc
	* src/FileEntry.h
	* src/InOrderURISelector.cc
	* src/InOrderURISelector.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/URISelector.h
	* src/a2algo.h
	* test/FeedbackURISelectorTest.cc
	* test/InOrderURISelectorTest.cc
2010-07-15 13:49:02 +00:00
Tatsuhiro Tsujikawa 55748de726 2010-07-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
FeedbackURISelector now tries to chooses URI which is not used in
	aria2 globally. If it is possible, it may return used URI.
	* src/AdaptiveURISelector.cc
	* src/AdaptiveURISelector.h
	* src/CreateRequestCommand.cc
	* src/FeedbackURISelector.cc
	* src/FeedbackURISelector.h
	* src/FileEntry.cc
	* src/FileEntry.h
	* src/InOrderURISelector.cc
	* src/InOrderURISelector.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/URISelector.h
	* test/FeedbackURISelectorTest.cc
	* test/InOrderURISelectorTest.cc
2010-07-14 14:10:33 +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 5018fdbe46 2010-06-13 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Made DownloadResult struct
	* src/DownloadResult.h
	* src/RequestGroup.h
	* src/RequestGroupMan.h
	* src/XmlRpcMethodImpl.h
2010-06-13 02:21:40 +00:00
Tatsuhiro Tsujikawa 322a0d1ad7 2010-03-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Use gid_t type for gid.
	* src/BtRegistry.cc
	* src/BtRegistry.h
	* src/DownloadResult.h
	* src/RequestGroup.cc
	* src/RequestGroup.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/XmlRpcMethodImpl.cc
2010-03-20 15:01:56 +00:00
Tatsuhiro Tsujikawa fe8fea56ca 2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Only execute RequestGroupMan::fillRequestGroupFromReserver() when
	queue maintenance is requested by RequestGroup to avoid to call
	the function unnecessarily.
	* src/FillRequestGroupCommand.cc
	* src/RequestGroup.cc
	* src/RequestGroup.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
2010-03-05 14:02:23 +00:00
Tatsuhiro Tsujikawa c342bde962 2010-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Use vector instead of deque for containers which is used for
	mostly read-only purpose.
2010-02-28 12:30:11 +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 dd98c64161 2009-12-22 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added changePosition XML-RPC method. It takes 3 parameters: gid,
	pos and how.  This method changes the position of download denoted
	by gid.  If how is POS_SET, it moves the download to a position
	relative to the beginning of the queue.  If how is POS_CUR, it
	moves the download to a position relative to the current
	position. If how is POS_END, it moves the download to a position
	relative to the end of the queue. If the destination position is
	less than 0 or beyond the end of the queue, it moves the download
	to the beginning or the end of the queue respectively.  Returns
	the destination position.
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/XmlRpcMethodFactory.cc
	* src/XmlRpcMethodImpl.cc
	* src/XmlRpcMethodImpl.h
	* test/RequestGroupManTest.cc
	* test/XmlRpcMethodTest.cc
2009-12-21 15:17:34 +00:00
Tatsuhiro Tsujikawa 07dc5bdfee 2009-10-31 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Throw exception if binding listening port is failed.  Removed
	RequestGroupMan::getInitialCommand(). Use
	fillRequestGroupFromReserver() instead.  Delete commands for
	RequestGroup which has errors when it is being added.
	* src/BtSetup.cc
	* src/DownloadEngine.cc
	* src/DownloadEngine.h
	* src/DownloadEngineFactory.cc
	* src/MultiUrlRequestInfo.cc
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* test/RequestGroupManTest.cc
2009-10-31 09:53:23 +00:00
Tatsuhiro Tsujikawa e82f870fdc 2009-06-29 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Removed _uris from RequestGroup. All functions that refer to _uris
	were moved to FileEntry. Exit status code are now defined in
	DownloadResultCode.h.
	* src/AbstractCommand.cc
	* src/AdaptiveURISelector.cc
	* src/AdaptiveURISelector.h
	* src/AutoSaveCommand.cc
	* src/BtPostDownloadHandler.cc
	* src/CheckIntegrityDispatcherCommand.cc
	* src/CookieStorage.cc
	* src/DHTAutoSaveCommand.cc
	* src/DHTBucketRefreshCommand.cc
	* src/DHTEntryPointNameResolveCommand.cc
	* src/DHTInteractionCommand.cc
	* src/DHTPeerAnnounceCommand.cc
	* src/DHTTokenUpdateCommand.cc
	* src/DlAbortEx.h
	* src/DlRetryEx.h
	* src/DownloadCommand.cc
	* src/DownloadContext.h
	* src/DownloadFailureException.h
	* src/DownloadResult.h
	* src/DownloadResultCode.h
	* src/FeedbackURISelector.cc
	* src/FeedbackURISelector.h
	* src/FileEntry.cc
	* src/FileEntry.h
	* src/FtpNegotiationCommand.cc
	* src/HttpListenCommand.cc
	* src/HttpResponseCommand.cc
	* src/HttpServerResponseCommand.cc
	* src/HttpSkipResponseCommand.cc
	* src/InOrderURISelector.cc
	* src/InOrderURISelector.h
	* src/Makefile.am
	* src/Makefile.in
	* src/Metalink2RequestGroup.cc
	* src/MultiUrlRequestInfo.cc
	* src/MultiUrlRequestInfo.h
	* src/OptionHandlerFactory.cc
	* src/PeerListenCommand.cc
	* src/RecoverableException.h
	* src/RequestGroup.cc
	* src/RequestGroup.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/TimedHaltCommand.cc
	* src/TrackerWatcherCommand.cc
	* src/URIResult.cc
	* src/URIResult.h
	* src/URISelector.h
	* src/XmlRpcMethodImpl.cc
	* src/bittorrent_helper.cc
	* src/bittorrent_helper.h
	* src/download_helper.cc
	* src/main.cc
	* src/option_processing.cc
	* test/BtDependencyTest.cc
	* test/BtPostDownloadHandlerTest.cc
	* test/CookieStorageTest.cc
	* test/DefaultBtMessageDispatcherTest.cc
	* test/DownloadHandlerFactoryTest.cc
	* test/DownloadHelperTest.cc
	* test/FeedbackURISelectorTest.cc
	* test/FileEntryTest.cc
	* test/InOrderURISelectorTest.cc
	* test/Metalink2RequestGroupTest.cc
	* test/MetalinkPostDownloadHandlerTest.cc
	* test/RequestGroupManTest.cc
	* test/RequestGroupTest.cc
	* test/XmlRpcMethodTest.cc
2009-06-29 08:42:58 +00:00
Tatsuhiro Tsujikawa 0b9c5a9165 2009-06-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added _xmlRpc member variable to RequestGroupMan to reduce the
	number of call Option::getAsBool(PREF_ENABLE_XML_RPC)	
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
2009-06-20 03:19:23 +00:00
Tatsuhiro Tsujikawa a9189ee7d9 2009-05-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added max-concurrent-downloads option to changeGlobalOption
	xml-rpc method.  Rewritten loop conditional in
	RequestGroupMan::fillRequestGroupFromReserver().
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/XmlRpcMethod.cc
	* src/XmlRpcMethodImpl.cc
2009-05-30 14:28:18 +00:00
Tatsuhiro Tsujikawa 960bab86c7 2009-05-31 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added 'position' parameter to addUri, addTorrent and addMetalink
	xml-rpc method.
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/XmlRpcMethodImpl.cc
	* test/XmlRpcMethodTest.cc
2009-05-30 13:55:14 +00:00
Tatsuhiro Tsujikawa 8b6da1ee36 2009-05-29 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Implemented getter methods in header files to give them more
	chance of optimization.
	Return const reference for SharadHandle if possible.
	* src/AbstractAuthResolver.cc
	* src/AbstractAuthResolver.h
	* src/AbstractBtMessage.cc
	* src/AbstractBtMessage.h
	* src/AbstractSingleDiskAdaptor.cc
	* src/AbstractSingleDiskAdaptor.h
	* src/AsyncNameResolver.cc
	* src/AsyncNameResolver.h
	* src/BNode.cc
	* src/BNode.h
	* src/BitfieldMan.cc
	* src/BitfieldMan.h
	* src/BtAbortOutstandingRequestEvent.h
	* src/BtExtendedMessage.cc
	* src/BtExtendedMessage.h
	* src/BtSeederStateChoke.cc
	* src/BtSeederStateChoke.h
	* src/Cookie.cc
	* src/Cookie.h
	* src/DHTBucket.cc
	* src/DHTBucket.h
	* src/DHTConnectionImpl.cc
	* src/DHTConnectionImpl.h
	* src/DHTFindNodeReplyMessage.cc
	* src/DHTFindNodeReplyMessage.h
	* src/DHTGetPeersReplyMessage.cc
	* src/DHTGetPeersReplyMessage.h
	* src/DHTInteractionCommand.cc
	* src/DHTMessage.cc
	* src/DHTMessage.h
	* src/DHTMessageDispatcherImpl.cc
	* src/DHTMessageEntry.cc
	* src/DHTMessageReceiver.cc
	* src/DHTMessageReceiver.h
	* src/DHTMessageTrackerEntry.cc
	* src/DHTMessageTrackerEntry.h
	* src/DHTPeerAnnounceEntry.cc
	* src/DHTPeerAnnounceEntry.h
	* src/DHTPeerLookupTask.cc
	* src/DHTPeerLookupTask.h
	* src/DHTRoutingTableDeserializer.cc
	* src/DHTRoutingTableDeserializer.h
	* src/DefaultBtAnnounce.cc
	* src/DefaultBtAnnounce.h
	* src/DefaultBtMessageDispatcher.cc
	* src/DefaultBtMessageDispatcher.h
	* src/DefaultBtRequestFactory.cc
	* src/DefaultBtRequestFactory.h
	* src/DiskAdaptor.cc
	* src/DiskAdaptor.h
	* src/DownloadContext.cc
	* src/DownloadContext.h
	* src/DownloadEngine.cc
	* src/DownloadEngine.h
	* src/EpollEventPoll.cc
	* src/EpollEventPoll.h
	* src/FtpConnection.cc
	* src/FtpConnection.h
	* src/HttpConnection.cc
	* src/HttpConnection.h
	* src/HttpHeader.cc
	* src/HttpHeader.h
	* src/HttpRequest.cc
	* src/HttpRequest.h
	* src/HttpResponse.cc
	* src/HttpResponse.h
	* src/LibsslTLSContext.cc
	* src/LibsslTLSContext.h
	* src/MSEHandshake.cc
	* src/MSEHandshake.h
	* src/MetalinkEntry.cc
	* src/MetalinkEntry.h
	* src/MetalinkParserController.cc
	* src/MetalinkParserController.h
	* src/MetalinkParserStateMachine.cc
	* src/MetalinkParserStateMachine.h
	* src/MultiDiskAdaptor.cc
	* src/MultiDiskAdaptor.h
	* src/NetrcAuthResolver.cc
	* src/NetrcAuthResolver.h
	* src/Peer.cc
	* src/Peer.h
	* src/PeerSessionResource.cc
	* src/PeerSessionResource.h
	* src/Piece.cc
	* src/Piece.h
	* src/PieceStatMan.cc
	* src/PieceStatMan.h
	* src/Request.cc
	* src/Request.h
	* src/RequestGroup.cc
	* src/RequestGroup.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/RequestSlot.cc
	* src/RequestSlot.h
	* src/SegmentMan.cc
	* src/SegmentMan.h
	* src/SelectEventPoll.cc
	* src/SelectEventPoll.h
	* src/ServerStat.cc
	* src/ServerStat.h
	* src/Signature.cc
	* src/Signature.h
	* src/URIResult.cc
	* src/URIResult.h
	* src/UTPexExtensionMessage.cc
	* src/UTPexExtensionMessage.h
2009-05-29 12:12:22 +00:00
Tatsuhiro Tsujikawa 3e2ccbf359 2009-05-15 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added changeGlobalOption command. Currently,
	max-overall-download-limit and max-overall-upload-limit option are
	available.
	* src/RequestGroupMan.h
	* src/XmlRpcMethod.cc
	* src/XmlRpcMethod.h
	* src/XmlRpcMethodFactory.cc
	* src/XmlRpcMethodImpl.cc
	* src/XmlRpcMethodImpl.h
	* test/XmlRpcMethodTest.cc
2009-05-14 15:44:59 +00:00
Tatsuhiro Tsujikawa 692c4eaf3e 2009-05-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added purgeDownloadResult command.
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/XmlRpcMethodFactory.cc
	* src/XmlRpcMethodImpl.cc
	* src/XmlRpcMethodImpl.h
2009-05-14 13:48:26 +00:00
Tatsuhiro Tsujikawa b2605588b7 2009-05-09 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Renamed TellActiveStatusXmlRpcMethod as TellActiveXmlRpcMethod.
	Added TellStatusXmlRpcMethod.  Remove command can now remove
	waiting RequestGroup.	
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/XmlRpcMethodFactory.cc
	* src/XmlRpcMethodImpl.cc
	* src/XmlRpcMethodImpl.h
2009-05-09 12:41:37 +00:00
Tatsuhiro Tsujikawa c659b07b86 2009-05-08 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added remove xml-rpc command which removes specified download.
	There is a known issue: the removed unfinished downloads are
	reported ERR when aria2 exits. They should be reported as INPR.
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/XmlRpcMethodFactory.cc
	* src/XmlRpcMethodImpl.cc
	* src/XmlRpcMethodImpl.h
2009-05-08 08:36:52 +00:00
Tatsuhiro Tsujikawa b57b75f98d 2009-05-08 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added xml-rpc functionality. Currently only addURI commad is
	supported. To enable xml-rpc, run aria2 with
	--enable-http-server. This option name is temporal and will be
	changed. The feature that reports download progress in html format
	is temporarily disabled.
	* src/HttpServer.cc
	* src/HttpServer.h
	* src/HttpServerBodyCommand.cc
	* src/HttpServerBodyCommand.h
	* src/HttpServerCommand.cc
	* src/HttpServerResponseCommand.cc
	* src/Makefile.am
	* src/OptionParser.cc
	* src/OptionParser.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/XmlRpcMethod.cc
	* src/XmlRpcMethod.h
	* src/XmlRpcMethodFactory.cc
	* src/XmlRpcMethodFactory.h
	* src/XmlRpcMethodImpl.cc
	* src/XmlRpcMethodImpl.h
	* src/download_helper.cc
	* src/download_helper.h
	* test/Makefile.am
	* test/XmlRpcMethodTest.cc
2009-05-08 07:58:50 +00:00
Tatsuhiro Tsujikawa 0b29a6e2cf 2009-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added --max-overall-download-limit option.  Now
	--max-upload-limit option is not ignored when
	--max-overall-upload-limit option has non-zero value. aria2
	checks download(upload) speed in the order:
	first checks overall speed limit and if it is not exceeded, then
	checks speed limit per download.  Thus you can specify both
	value. For example, set --max-overall-download-limit=1M and
	--max-download-limit=500K to prevent from one download from
	eating all overall speed limit.
	* src/DefaultBtInteractive.cc
	* src/DefaultBtInteractive.h
	* src/DefaultBtMessageDispatcher.cc
	* src/DefaultBtMessageDispatcher.h
	* src/DownloadCommand.cc
	* src/DownloadCommand.h
	* src/FtpNegotiationCommand.cc
	* src/HttpResponseCommand.cc
	* src/OptionHandlerFactory.cc
	* src/PeerInteractionCommand.cc
	* src/RequestGroup.cc
	* src/RequestGroup.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/prefs.cc
	* src/prefs.h
	* src/usage_text.h
	* test/DefaultBtMessageDispatcherTest.cc
2009-02-28 11:48:26 +00:00
Tatsuhiro Tsujikawa 8a9d921465 2009-01-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Applied exit-status patch from Pascal Rigaux at Mandriva.  aria2
	now returns last error encountered in the HTTP/FTP downloads as
	a exit status value.  If all downloads finished successfully, 
	aria2 returns 0.  The error code is defined in
	src/DownloadResult.h.
	The error occurred in the download currently in progress is not
	reported as a last error.  If no error has encountered but there
	are in progress or waiting downloads, aria2 returns 7.
	
	* src/AbstractCommand.cc
	* src/DlAbortEx.h
	* src/DlRetryEx.h
	* src/DownloadCommand.cc
	* src/DownloadFailureException.h
	* src/DownloadResult.h
	* src/FtpNegotiationCommand.cc
	* src/HttpSkipResponseCommand.cc
	* src/Makefile.am
	* src/MultiUrlRequestInfo.cc
	* src/MultiUrlRequestInfo.h
	* src/RecoverableException.h
	* src/RequestGroup.cc
	* src/RequestGroup.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/URIResult.cc
	* src/URIResult.h
	* src/main.cc
	* src/option_processing.cc
	* test/RequestGroupTest.cc
2009-01-12 12:27:34 +00:00
Tatsuhiro Tsujikawa 7cf589e784 2008-11-03 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Made BtRegistry non-static object. Now DownloadEngine has a
	reference to its object.
	* src/AbstractBtMessage.cc
	* src/ActivePeerConnectionCommand.cc
	* src/ActivePeerConnectionCommand.h
	* src/BtContextAwareCommand.cc
	* src/BtContextAwareCommand.h
	* src/BtExtendedMessage.cc
	* src/BtExtendedMessage.h
	* src/BtInterestedMessage.cc
	* src/BtInterestedMessage.h
	* src/BtNotInterestedMessage.cc
	* src/BtNotInterestedMessage.h
	* src/BtRegistry.cc
	* src/BtRegistry.h
	* src/BtSeederStateChoke.cc
	* src/BtSetup.cc
	* src/DHTGetPeersCommand.cc
	* src/DHTGetPeersCommand.h
	* src/DHTPeerAnnounceEntry.cc
	* src/DHTPeerAnnounceEntry.h
	* src/DHTPeerAnnounceStorage.cc
	* src/DHTPeerAnnounceStorage.h
	* src/DHTPeerLookupTask.cc
	* src/DHTPeerLookupTask.h
	* src/DHTSetup.cc
	* src/DHTSetup.h
	* src/DHTTaskFactory.h
	* src/DHTTaskFactoryImpl.cc
	* src/DHTTaskFactoryImpl.h
	* src/DefaultBtAnnounce.cc
	* src/DefaultBtInteractive.cc
	* src/DefaultBtInteractive.h
	* src/DefaultBtMessageDispatcher.cc
	* src/DefaultBtMessageDispatcher.h
	* src/DefaultBtMessageFactory.cc
	* src/DefaultBtMessageFactory.h
	* src/DefaultBtMessageReceiver.cc
	* src/DefaultBtProgressInfoFile.cc
	* src/DefaultBtProgressInfoFile.h
	* src/DefaultBtRequestFactory.cc
	* src/DefaultBtRequestFactory.h
	* src/DefaultExtensionMessageFactory.cc
	* src/DefaultExtensionMessageFactory.h
	* src/DefaultPeerStorage.cc
	* src/DefaultPeerStorage.h
	* src/DownloadEngine.cc
	* src/DownloadEngine.h
	* src/InitiatorMSEHandshakeCommand.cc
	* src/InitiatorMSEHandshakeCommand.h
	* src/MSEHandshake.cc
	* src/MSEHandshake.h
	* src/Makefile.am
	* src/Makefile.in
	* src/PeerChokeCommand.cc
	* src/PeerChokeCommand.h
	* src/PeerInitiateConnectionCommand.cc
	* src/PeerInitiateConnectionCommand.h
	* src/PeerInteractionCommand.cc
	* src/PeerInteractionCommand.h
	* src/PeerObject.h
	* src/PeerReceiveHandshakeCommand.cc
	* src/PeerReceiveHandshakeCommand.h
	* src/ReceiverMSEHandshakeCommand.cc
	* src/RequestGroup.cc
	* src/RequestGroup.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/SeedCheckCommand.cc
	* src/SeedCheckCommand.h
	* src/ShareRatioSeedCriteria.h
	* src/SimpleBtMessage.cc
	* src/TrackerWatcherCommand.cc
	* src/TrackerWatcherCommand.h
	* src/UTPexExtensionMessage.cc
	* src/UTPexExtensionMessage.h
	* test/BtCancelMessageTest.cc
	* test/BtChokeMessageTest.cc
	* test/BtExtendedMessageTest.cc
	* test/BtInterestedMessageTest.cc
	* test/BtNotInterestedMessageTest.cc
	* test/BtPieceMessageTest.cc
	* test/BtPortMessageTest.cc
	* test/BtRegistryTest.cc
	* test/BtRejectMessageTest.cc
	* test/BtRequestMessageTest.cc
	* test/DHTPeerAnnounceEntryTest.cc
	* test/DHTPeerAnnounceStorageTest.cc
	* test/DefaultBtMessageDispatcherTest.cc
	* test/DefaultBtMessageFactoryTest.cc
	* test/DefaultBtProgressInfoFileTest.cc
	* test/DefaultBtRequestFactoryTest.cc
	* test/DefaultExtensionMessageFactoryTest.cc
	* test/MSEHandshakeTest.cc
	* test/MockDHTTaskFactory.h
	* test/ShareRatioSeedCriteriaTest.cc
	* test/UTPexExtensionMessageTest.cc
2008-11-03 06:49:02 +00:00
Tatsuhiro Tsujikawa 72da43e47f 2008-09-14 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added convenient method RequestGroupMan::getOrCreateServerStat()
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
2008-09-14 14:25:16 +00:00
Tatsuhiro Tsujikawa db46bab38b 2008-08-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added options to load/save the server's performance/status to a	
file
	and the timeout to drop their data.
	--server-stat-of=FILE specifies the file to which performance 
data
	is saved.
	--server-stat-if=FILE specifies the file to read previously 
saved
	by --server-stat-of option. Might be used with 
--uri-selector=feedback.
	--server-stat-timeout=TIMEOUT specifies timeout to invalidate 
the data.
	TIMEOUT is specified in seconds and the default value is 
24hours.
	* src/MultiUrlRequestInfo.cc
	* src/OptionHandlerFactory.cc
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/ServerStatMan.cc
	* src/ServerStatMan.h
	* src/option_processing.cc
	* src/prefs.cc
	* src/prefs.h
	* test/ServerStatManTest.cc
2008-08-10 15:22:55 +00:00
Tatsuhiro Tsujikawa d64c8e75f6 2008-08-05 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Implemented download speed based URI selection algorithm.
	Introduced new option --uri-selector.
	If --uri-selector=feedback is given, aria2 uses download speed 
observed
	in the previous downloads and chooses fastest server in the URI 
list.
	Currently at most 10 URIs are considered to introduce 
randomeness for
	finding better servers. The speed is average download speed in 
the
	downloads.
	On the other hand, if --uri-selector=inorder is given, which is 
default,
	URI is tried in order in URI list.
	The usage text for the new option has not been written yet.
	* src/AbstractCommand.cc
	* src/DownloadCommand.cc
	* src/DownloadEngine.cc
	* src/DownloadEngineFactory.cc
	* src/InOrderURISelector.cc
	* src/InOrderURISelector.h
	* src/OptionHandlerFactory.cc
	* src/PeerStat.h
	* src/RequestGroup.cc
	* src/RequestGroup.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/SegmentMan.cc
	* src/SegmentMan.h
	* src/ServerStat.cc
	* src/ServerStat.h
	* src/ServerStatMan.cc
	* src/ServerStatMan.h
	* src/ServerStatURISelector.cc
	* src/ServerStatURISelector.h
	* src/URISelector.h
	* src/option_processing.cc
	* src/prefs.cc
	* src/prefs.h
	* test/InOrderURISelectorTest.cc
	* test/RequestGroupManTest.cc
	* test/ServerStatManTest.cc
	* test/ServerStatURISelectorTest.cc
2008-08-04 17:06:47 +00:00
Tatsuhiro Tsujikawa 2e8e926c10 2008-05-15 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Print download progress summary of all parallel downloads in specified
	interval, default 60 secs. While aria2 could download several files
	in parallel (see -j option), it displayed just first download progress,
	and the other downloads are hidden from the users. This new feature
	prints all downloads currently in-progress to the console so that you
	can check the status of all downloads. The interval can be adjusted
	by --summary-interval option.
	
	The progress readout is now cut so that all fits in the one line of
	console.
	* src/ConsoleStatCalc.cc
	* src/ConsoleStatCalc.h
	* src/HelpItemFactory.cc
	* src/OptionHandlerFactory.cc
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/main.cc
	* src/option_processing.cc
	* src/prefs.h
	* src/usage_text.h
2008-05-15 14:37:02 +00:00
Tatsuhiro Tsujikawa 825cfe7715 2008-05-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Pass std::deque<Command*> by reference to avoid unnecessary coping.
	* src/AbstractCommand.cc
	* src/BtCheckIntegrityEntry.cc
	* src/BtCheckIntegrityEntry.h
	* src/BtFileAllocationEntry.cc
	* src/BtFileAllocationEntry.h
	* src/BtSetup.cc
	* src/BtSetup.h
	* src/CheckIntegrityCommand.cc
	* src/CheckIntegrityEntry.h
	* src/ChecksumCheckIntegrityEntry.cc
	* src/ChecksumCheckIntegrityEntry.h
	* src/DHTSetup.cc
	* src/DHTSetup.h
	* src/DownloadEngine.cc
	* src/FileAllocationCommand.cc
	* src/FileAllocationEntry.h
	* src/RequestGroup.cc
	* src/RequestGroup.h
	* src/RequestGroupMan.cc
	* src/RequestGroupMan.h
	* src/StreamCheckIntegrityEntry.cc
	* src/StreamCheckIntegrityEntry.h
	* src/StreamFileAllocationEntry.cc
	* src/StreamFileAllocationEntry.h
	* src/TrackerWatcherCommand.cc
	* src/a2functional.h
2008-05-11 09:36:39 +00:00
Tatsuhiro Tsujikawa 90d5b5c0a2 2008-04-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added StringFormat class, which internally calls vasprintf.
	operator<< is defined for this class, so it can be used with iostream
	classes nicely. SimpleLogger and following functions are rewritten
	using StringFormat class.
	Besides, now Logger class's methods are non-const, many classes
	that has a const Logger* as a member variable are modified to remove
	const qualifier from the variable declaration.
	* src/HelpItemFactory.cc
	* src/Request.cc
	* src/SimpleLogger.cc
	* src/StringFormat.cc
	* src/StringFormat.h
	* src/Util.cc
	* src/option_processing.cc
	* src/version_usage.cc
	* test/StringFormatTest.cc
	* src/*.h: The classes that has const Logger* as a member variable.
2008-04-26 05:58:49 +00:00