Commit Graph

233 Commits (aa4ea8889c827df4b178b6ae6259b82e86bfbc5f)

Author SHA1 Message Date
Tatsuhiro Tsujikawa aa4ea8889c clang-format-3.9 2016-10-15 19:02:54 +09:00
Tatsuhiro Tsujikawa 55f311a908 Add --keep-unfinished-download-result option
This option keeps unfinished download results even if doing so exceeds
--max-download-result. This is useful if all unfinished downloads must
be saved in session file (see --save-session option). Please keep in
mind that there is no upper bound to the number of unfinished download
result to keep.  User should use this option only when they know the
total number of downloads in advance.
2016-09-24 11:42:43 +09:00
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 437d4aa776 Fix compile error with Android NDK 2016-04-15 23:09:54 +09:00
Tatsuhiro Tsujikawa a7cd943a06 clang-format 2016-03-26 00:35:16 +09:00
Tatsuhiro Tsujikawa 60d0cb0e24 Remove trailing white spaces 2016-03-16 21:25:43 +09:00
oliviercommelarbre 9e05371fb6 Added support for a dynamic management of the number of concurrent downloads as a function of the overall bandwidth observed 2016-03-16 21:22:49 +09:00
Tatsuhiro Tsujikawa b1132d6b10 make clang-format using clang-format-3.6 2015-12-27 18:40:08 +09:00
Jarda Snajdr 06b8874a49 Send the last error message as part of tellStatus RPC response 2015-11-18 14:54:29 +01:00
Tatsuhiro Tsujikawa 52c68c431d Fix on-download-error is executed even if download succeeded 2015-08-01 21:42:03 +09:00
Tatsuhiro Tsujikawa 11b25b7a55 Fix formatting issue for avg speed in Download Result 2015-06-22 22:18:58 +09:00
Tatsuhiro Tsujikawa b0f440e631 Rewrite Time with chrono 2015-06-09 03:15:10 +09:00
Tatsuhiro Tsujikawa 99cd73c092 Replace timer facility with chrono lib 2015-06-09 02:05:34 +09:00
Dan Fandrich 0538aa40da Fixed some typos in code comments 2015-01-16 01:17:35 +01:00
Tatsuhiro Tsujikawa f72a303b8d Add --bt-detach-seed-only option
This option excludes seed only downloads when counting concurrent
active downloads (-j option).  This means that if -j3 is given and
this option is turned on and 3 downloads are active and one of those
enters seed mode, then it is excluded from active download count (thus
it becomes 2), and the next download waiting in queue gets started.
But be aware that seeding item is still recognized as active download
in RPC method.
2014-10-14 00:13:29 +09:00
Tatsuhiro Tsujikawa 9b84727324 Use std::make_shared and make_unique where possible, part 2 2014-09-13 18:37:57 +09:00
Tatsuhiro Tsujikawa 570bc24fb9 Fix use-after-free on exit with multi-file torrent download + DHT
DefaultPieceStorage may be referenced by one of DHT task (e.g.,
DHTPeerLookupTask), after RequestGroup was deleted, and even after
RequestGroupMan was deleted.  DefaultPieceStorage has a reference to
MultiDiskAdaptor which calls RequestGroupMan object on destruction.
So when DHT task is destroyed, DefaultPieceStorage is destroyed, which
in turn destroys MultiDiskAdaptor.  DHT task is destroyed after
RequestGroupMan was destroyed, MultiDiskAdaptor will use now freed
RequestGroupMan object, this is use-after-free.
2014-06-08 17:03:34 +09:00
Tatsuhiro Tsujikawa 631f37433a Save session only when there is change since the last serialization
This is a slight optimization not to cause useless disk access.  This
only applies to saving session automatically (see
--save-session-interval).  aria2.saveSession and serialization at the
end of the session are always performed as before.

When serialization, we first check that whether there is any change
since the last serialization.  To do this, we first calculate hash
value of serialized content without writing into file.  Then compare
this value to the value of last serialization.  If they do not match,
perform serialization.
2014-05-31 16:19:57 +09:00
Tatsuhiro Tsujikawa 998fba3264 Revert "Save session only when there is change since the last serialization"
This reverts commit 1944d8db58.
2014-05-31 15:28:26 +09:00
Tatsuhiro Tsujikawa 1944d8db58 Save session only when there is change since the last serialization
This is a slight optimization not to cause useless disk access.  This
only applies to saving session automatically (see
--save-session-interval).  aria2.saveSession and serialization at the
end of the session are always performed as before.
2014-05-30 23:20:13 +09:00
Tatsuhiro Tsujikawa 1462d6536a Add numStoppedTotal key to aria2.getGlobalStat() RPC method response
It shows the number of stopped downloads in the current session and
not capped by --max-download-result option. On the other hand, the
existing numStopped key also shows the number of stopped downloads,
but it is capped by --max-download-result option.
2014-02-15 19:10:48 +09:00
Tatsuhiro Tsujikawa 30e4077440 Add --enable-color option to enable/disable terminal color output 2014-01-30 00:15:05 +09:00
Tatsuhiro Tsujikawa 8216bdba79 Fix bug that numOpenFile_ is not reduced when MultiDiskAdaptor is deleted
This bug caused assertion error in RequestGroupMan::ensureMaxOpenFileLimit
2013-12-31 22:57:11 +09:00
Tatsuhiro Tsujikawa 4d105a2686 Limit number of opened file globally with --bt-max-open-files option
This change changes the behavior of --bt-max-open-files. Previously,
it specifies the maximum number of opened files for each multi-file
download. Since it is more useful to limit the number globally, the
option now specifies the global limit. This change suggests that
aria2.changeOption() method now ignores --bt-max-open-files and
aria2.changeGlobalOption now reads it and dynamically change the
limit.
2013-11-17 19:33:18 +09:00
Nils Maier 8526ceeb45 Convert to autos and ranged loops 2013-08-21 05:56:17 +02:00
Nils Maier d8f44ef4f6 Convert most 0/NULL pointers to nullptr
Courtesy of llvm cpp11-migrate 3.3
2013-08-20 21:28:24 +02:00
Tatsuhiro Tsujikawa de55569de5 Always save control file if --force-save is given 2013-07-28 18:07:29 +09:00
Tatsuhiro Tsujikawa 41121e09f7 Use std::unique_ptr for Metalink objects 2013-07-12 23:09:23 +09:00
Tatsuhiro Tsujikawa a479473949 Use std::unique_ptr for URISelector instead of std::shared_ptr 2013-07-04 01:16:48 +09:00
Tatsuhiro Tsujikawa fa9f3fb5a3 Wrap Command object in std::unique_ptr 2013-06-23 21:55:52 +09:00
Tatsuhiro Tsujikawa bb5b7eeedb Move RequestGroup vector from Context to RequestGroupMan 2013-06-23 16:35:14 +09:00
Tatsuhiro Tsujikawa 286bb2840e Remove Triplet, use std::tuple instead 2013-06-22 21:08:50 +09:00
Tatsuhiro Tsujikawa e791eb9ca3 Cleanup a2functional.h
Remove mem_fun_sh in favor of std::mem_fun. Remove unused functions.

Use std::mem_fn instead of mem_fun_sh
2013-06-22 17:53:39 +09: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 cef6db17ba Add changePosition API 2013-05-15 00:50:55 +09:00
Tatsuhiro Tsujikawa 1c571f196a Refactor Notifier interface to accept DownloadEventListener interface
WebSocketSessionMan now implements DownloadEventListener and is added
to Notifier. It becomes member variable of DownloadEngine.  The event
constant for download event is defined in aria2.h so that we can add
event callback API later.
2013-05-11 18:50:03 +09:00
Tatsuhiro Tsujikawa 24a6896bf4 Add sessionConfigSetKeepRunning and shutdown API function
Setting sessionConfigSetKeepRunning to true makes aria2 core keep
running even if there is no download to perform, just like --enable-rpc
option.
2013-05-01 21:28:04 +09:00
Tatsuhiro Tsujikawa 90abec8a36 Move initialization code in aria2::main to struct Context 2013-04-25 21:46:31 +09:00
Tatsuhiro Tsujikawa baaa3a4fb2 Use IndexedList::remove_if to clean up RequestGroupMan::removeStoppedGroup 2013-03-03 18:08:19 +09:00
Tatsuhiro Tsujikawa d4ba562710 Implement IndexedList::iterator
It is dangerous to expose internal iterator to the outside, which is
easily misused.
2013-03-03 18:00:42 +09:00
Nils Maier 7f6a446750 Hygiene: Fix some clang warnings, mostly unused private members. 2013-03-01 13:17:52 +01:00
Tatsuhiro Tsujikawa a49397ed19 Fix infinite loop when size of downloadResults_ exceeds maxDownloadResult_ 2013-02-25 21:42:54 +09:00
Tatsuhiro Tsujikawa 1c9cfccac4 Fix invalid iterator handling when deleting RequestGroup 2013-02-03 18:18:28 +09:00
Tatsuhiro Tsujikawa 561f0b3e29 Use std::deque instead of std::list in IndexedList
We choose faster iteration over rare slower deletion in the middle.
2013-02-01 00:03:47 +09:00
Tatsuhiro Tsujikawa 616cd9e75f Simplified RequestGroupMan::fillRequestGroupFromReserver 2012-12-22 23:37:44 +09:00
Tatsuhiro Tsujikawa 07bb779eb0 Faster deletion of RequestGroup and DownloadResult lists 2012-12-19 23:03:48 +09:00
Tatsuhiro Tsujikawa 0a4ce4fdb5 Use map to make DownloadResult lookup fast 2012-12-16 18:50:45 +09:00
Tatsuhiro Tsujikawa b9da9d4ed3 Use 64 bits random bytes as GID
This change replaces the current 64 bit sequential GID with 64 bits
random bytes GID in an attempt to support persistent GID. Internally,
the GID is stored as uint64_t. For human representation and RPC
interface, GID is represented as 16 bytes hex string. For console
readout, 16 bytes are too long, so it is abbreviated to first 6 bytes.
When querying GID in RPC calls, user can speicfy the prefix of GID as
long as the prefix is shared by more than 1 GID entries.
2012-12-16 17:29:01 +09:00
Tatsuhiro Tsujikawa e86fd44dc5 Console color output
Log level and download result string is now colored.
2012-12-08 21:48:18 +09:00
Tatsuhiro Tsujikawa f314719618 Added --disk-cache option
This option enables disk cache. If SIZE is 0, the disk cache is
disabled. This feature caches the downloaded data in memory, which
grows to at most SIZE bytes. The cache storage is created for aria2
instance and shared by all downloads. The one advantage of the disk
cache is reduce the disk seek time because the data is written in
larger unit and it is reordered by the offset of the file. If the
underlying file is heavily fragmented it is not the case.
2012-12-03 01:39:10 +09:00