Nils Maier
366e2e8f79
Use default where possible
2016-08-29 16:52:20 +02:00
Tatsuhiro Tsujikawa
babdcb2c7d
Change have entry indexing method
...
Now use increasing sequence of integer rather than timer value.
2016-07-10 22:42:49 +09:00
Tatsuhiro Tsujikawa
b1132d6b10
make clang-format using clang-format-3.6
2015-12-27 18:40:08 +09:00
Tatsuhiro Tsujikawa
9b84727324
Use std::make_shared and make_unique where possible, part 2
2014-09-13 18:37:57 +09:00
Nils Maier
b9fe4119c0
New round of clang-modernize
2014-05-29 19:38:34 +02:00
Nils Maier
a82f08765e
Fix (unknown length) downloads larger than 2GiB
...
Closes #215
2014-05-25 14:49:29 +02:00
Nils Maier
3590077d5c
More auto-converts by cpp11-migrate
2013-09-20 23:06:49 +02:00
Nils Maier
8526ceeb45
Convert to autos and ranged loops
2013-08-21 05:56:17 +02:00
Tatsuhiro Tsujikawa
0cdeaa8177
Return nullptr directly where std::shared_ptr is expected
...
The constructor of std::shared_ptr which takes nullptr is not explicit
so we can return nullptr directly.
2013-07-04 21:44:09 +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
b05454657f
Fix cached data is not flushed when downloaded data is less than 16KiB
2013-04-23 23:00:11 +09:00
Nils Maier
7f6a446750
Hygiene: Fix some clang warnings, mostly unused private members.
2013-03-01 13:17:52 +01:00
Tatsuhiro Tsujikawa
bd671403bc
Fix compiler warning
2012-12-26 23:10:32 +09:00
Tatsuhiro Tsujikawa
2c5e77f422
Flush cached data on checkout/cancel Segment
...
This change prevents the cached data from overlap because of BT peers.
2012-12-06 01:16:28 +09:00
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
46bdaf0e8d
Made HTTP/FTP download speed limiter more accurate
...
We have to do the same thing for BitTorrent.
2012-10-24 01:05:41 +09:00
Tatsuhiro Tsujikawa
3258614033
Removed *Handle typedef
2012-09-28 23:27:46 +09:00
Tatsuhiro Tsujikawa
16d395779a
Removed static_cast<int64>()s where they are unnecessary
2012-06-25 23:44:52 +09:00
Tatsuhiro Tsujikawa
1b874268a0
Use int64_t instead of off_t
...
Some classes such as DiskAdaptor, DiskWriter, FileAllocationIterator
and ChecksumValidator are left unchanged.
2012-06-25 23:35:24 +09:00
Tatsuhiro Tsujikawa
4b03634f36
Use PRId64 for int64_t format specifier
2012-06-25 22:43:33 +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
9d15d732ed
Use int32_t for piece length instead of size_t
2011-12-09 21:39:43 +09:00
Tatsuhiro Tsujikawa
12988e5282
Replaced uint64_t with off_t or int64_t.
...
Since off_t is int64_t with LFS, we cannot take advantage of extra
capacity of uint64_t.
2011-12-09 21:39:43 +09:00
Tatsuhiro Tsujikawa
1687741303
Use fmt instead of util::itos
2011-11-13 20:55:06 +09:00
Tatsuhiro Tsujikawa
e8e3a6f259
wallclock is now retrieved using global::wallclock() call.
...
This is necessary to avoid global variable initialization order
problem.
2011-08-10 01:17:28 +09:00
Tatsuhiro Tsujikawa
02307cee0a
Removed utf8ToNative from log message and exception message.
2011-08-08 21:46:10 +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
5c4a52ad74
Managed user cuid in Piece.
...
Previous implementation does not store information which Command cuid
uses which Piece. Mark Piece acquired by SegmentMan by setting
Piece::setUsedBySegment(true).
2011-07-16 00:58:41 +09:00
Tatsuhiro Tsujikawa
cc82da3bab
Added StreamPieceSelector class.
...
This class abstracts the piece selection algorithm for HTTP/FTP
download.
2011-06-11 17:34:17 +09:00
Tatsuhiro Tsujikawa
891c9e60ac
Use A2_DELTA_MILLIS for timing critical code.
2011-03-27 20:54:51 +09:00
Tatsuhiro Tsujikawa
03417e94b4
2010-11-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Use format specifier %lld for cuid_t. Defined cuid_t as long long
int instead of int64_t, since g++ complains int64_t is not
suitable for %lld.
2010-11-20 12:12:06 +00: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
93e5dbed32
2010-11-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Removed SharedHandle::isNull(). Instead we added operator* and
operator unspecified_bool_type. Removed use of WeakHandle and
replaced with raw pointer.
2010-11-12 12:48:48 +00:00
Tatsuhiro Tsujikawa
bc98e39fe5
2010-11-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
To match the behavior of friend operator functions in
SharedHandle.h to std::tr1::shared_ptr, we intentionally broke
these functions and modified code so that our code does not depend
on old behavior.
* src/AbstractCommand.cc
* src/DHTAbstractNodeLookupTask.h
* src/DHTBucket.cc
* src/DHTMessageReceiver.cc
* src/DHTNodeLookupEntry.cc
* src/DHTRoutingTable.cc
* src/DefaultBtRequestFactory.cc
* src/DefaultPeerStorage.cc
* src/DefaultPieceStorage.cc
* src/DownloadContext.cc
* src/EpollEventPoll.cc
* src/Event.h
* src/HttpConnection.cc
* src/KqueueEventPoll.cc
* src/MultiDiskAdaptor.cc
* src/PeerAbstractCommand.cc
* src/PieceStatMan.cc
* src/PollEventPoll.cc
* src/PortEventPoll.cc
* src/SegmentMan.cc
* src/SelectEventPoll.cc
* src/SelectEventPoll.h
* src/ServerStatMan.cc
* src/SharedHandle.h
* src/UnknownLengthPieceStorage.cc
* src/a2functional.h
* src/option_processing.cc
* src/version_usage.cc
* test/BNodeTest.cc
* test/DHTAnnouncePeerMessageTest.cc
* test/DHTBucketTest.cc
* test/DHTFindNodeMessageTest.cc
* test/DHTGetPeersMessageTest.cc
* test/DHTIDCloserTest.cc
* test/DHTMessageFactoryImplTest.cc
* test/DHTPingMessageTest.cc
* test/DefaultBtRequestFactoryTest.cc
* test/DefaultPeerStorageTest.cc
* test/SequentialPickerTest.cc
* test/SingletonHolderTest.cc
2010-11-11 07:33:43 +00:00
Tatsuhiro Tsujikawa
6ecfa4aad1
2010-10-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Added '// namespace' after end of unnamed namespace.
* src/AbstractCommand.cc
* src/AnnounceList.cc
* src/BtSeederStateChoke.cc
* src/ConsoleStatCalc.cc
* src/CookieStorage.cc
* src/DHTBucket.cc
* src/DHTPeerAnnounceEntry.cc
* src/DHTPeerAnnounceStorage.cc
* src/DHTTaskQueueImpl.cc
* src/DefaultBtMessageDispatcher.cc
* src/DefaultBtRequestFactory.cc
* src/DefaultPeerStorage.cc
* src/DefaultPieceStorage.cc
* src/ExpatMetalinkProcessor.cc
* src/ExpatXmlRpcRequestProcessor.cc
* src/FeedbackURISelector.cc
* src/FileEntry.cc
* src/GZipEncoder.cc
* src/Metalink2RequestGroup.cc
* src/MetalinkEntry.cc
* src/MetalinkParserStateV3Impl.cc
* src/MetalinkParserStateV4Impl.cc
* src/Metalinker.cc
* src/MultiDiskAdaptor.cc
* src/Netrc.cc
* src/NsCookieParser.cc
* src/OptionParser.cc
* src/PieceStatMan.cc
* src/RarestPieceSelector.cc
* src/RequestGroupMan.cc
* src/SegmentMan.cc
* src/ServerStatMan.cc
* src/SocketCore.cc
* src/XML2SAXMetalinkProcessor.cc
* src/Xml2XmlRpcRequestProcessor.cc
* src/XmlRpcMethodImpl.cc
* src/cookie_helper.cc
* src/download_helper.cc
* src/messageDigest.cc
* src/util.cc
2010-10-30 14:53:40 +00:00
Tatsuhiro Tsujikawa
b7df39b7ae
2010-10-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Fixed compiler warning about printf format.
* src/AdaptiveURISelector.cc
* src/BtPieceMessage.cc
* src/DHTAbstractNodeLookupTask.h
* src/DHTMessageFactoryImpl.cc
* src/DHTPeerLookupTask.cc
* src/DHTReplaceNodeTask.cc
* src/DefaultBtAnnounce.cc
* src/DefaultBtInteractive.cc
* src/DefaultBtMessageDispatcher.cc
* src/DefaultBtProgressInfoFile.cc
* src/DefaultBtRequestFactory.cc
* src/DefaultExtensionMessageFactory.cc
* src/DefaultPieceStorage.cc
* src/DownloadCommand.cc
* src/FileAllocationCommand.cc
* src/FileEntry.cc
* src/HandshakeExtensionMessage.cc
* src/IteratableChunkChecksumValidator.cc
* src/LibgcryptDHKeyExchange.h
* src/LibsslDHKeyExchange.h
* src/LpdDispatchMessageCommand.cc
* src/MSEHandshake.cc
* src/MessageDigestHelper.cc
* src/MultiDiskAdaptor.cc
* src/PeerConnection.cc
* src/SegmentMan.cc
* src/TimedHaltCommand.cc
* src/UTMetadataRequestExtensionMessage.cc
* src/UTPexExtensionMessage.cc
* src/bencode2.cc
* src/bittorrent_helper.cc
* src/message.h
2010-10-28 14:19:29 +00:00
Tatsuhiro Tsujikawa
94482144f2
2010-08-31 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Enclosed classes and structs declared in *.cc files unnamed
namespace. Added static keyword for function template in *.cc
files(TODO we should use unnamed namespace instead of static).
* src/AbstractCommand.cc
* src/AnnounceList.cc
* src/BtLeecherStateChoke.cc
* src/BtLeecherStateChoke.h
* src/BtSeederStateChoke.cc
* src/BtSeederStateChoke.h
* src/ConsoleStatCalc.cc
* src/ContentTypeRequestGroupCriteria.cc
* src/CookieStorage.cc
* src/DHTBucket.cc
* src/DHTPeerAnnounceEntry.cc
* src/DHTPeerAnnounceStorage.cc
* src/DefaultBtMessageDispatcher.cc
* src/DefaultBtRequestFactory.cc
* src/DefaultPeerStorage.cc
* src/DefaultPieceStorage.cc
* src/ExpatMetalinkProcessor.cc
* src/ExpatXmlRpcRequestProcessor.cc
* src/FeedbackURISelector.cc
* src/FileEntry.cc
* src/Metalink2RequestGroup.cc
* src/MetalinkEntry.cc
* src/Metalinker.cc
* src/MultiDiskAdaptor.cc
* src/Netrc.cc
* src/OptionParser.cc
* src/PieceStatMan.cc
* src/RarestPieceSelector.cc
* src/RequestGroupMan.cc
* src/SegmentMan.cc
* src/ServerStatMan.cc
* src/XML2SAXMetalinkProcessor.cc
* src/Xml2XmlRpcRequestProcessor.cc
* src/XmlRpcResponse.cc
* src/a2algo.h
* src/download_helper.cc
2010-08-31 13:33:05 +00:00
Tatsuhiro Tsujikawa
cd13647abe
2010-07-17 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Pass maxSplitSize as an argument, instead of member variable of
DefaultPieceStorage. SegmentMan::getSegment(cuid_t,size_t index)
was renamed to SegmentMan::getSegmentWithIndex(...)
* src/AbstractCommand.cc
* src/AbstractCommand.h
* src/DefaultPieceStorage.cc
* src/DefaultPieceStorage.h
* src/DownloadCommand.cc
* src/FtpNegotiationCommand.cc
* src/HttpResponseCommand.cc
* src/PieceStorage.h
* src/RequestGroup.cc
* src/SegmentMan.cc
* src/SegmentMan.h
* src/UnknownLengthPieceStorage.cc
* src/UnknownLengthPieceStorage.h
* test/MockPieceStorage.h
* test/SegmentManTest.cc
2010-07-17 14:36:18 +00:00
Tatsuhiro Tsujikawa
8a619ab9b9
2010-06-26 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Return null if written length > 0 even if SegmentEntry->cuid
equals given cuid.
* src/SegmentMan.cc
2010-06-26 12:41:07 +00:00
Tatsuhiro Tsujikawa
427577eed4
2010-06-21 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Fixed the bug that corrups file if segment returned from
SegmetnMan::getCleanSegmentIfOwnerIsIdle() has writtenLength > 0.
* src/DownloadCommand.cc
* src/SegmentMan.cc
* src/SegmentMan.h
* test/SegmentManTest.cc
2010-06-21 14:02:51 +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
8d6378b675
2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Renamed member variables in SegmentMan
* src/RequestGroup.cc
* src/RequestGroupMan.cc
* src/SegmentMan.cc
* src/SegmentMan.h
* src/XmlRpcMethodImpl.cc
* test/BtDependencyTest.cc
2010-06-12 13:49:39 +00:00
Tatsuhiro Tsujikawa
abe1e9843c
2010-03-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Added --always-resume and --max-resume-failure-tries option. If
--always-resume=false is given, when all given URIs does not
support resume or aria2 encounters N URIs which does not support
resume
(N is the value specified using --max-resume-failure-tries
option), aria2 download file from scratch. The default behavior
is --always-resume=true, which means if all URIs do not support
resume, download fails. I think this is OK because user normally
don't like to see that partially downloaded file is
overwritten(this is particularly true if file size is big). This
option is useful when aria2 is used as download backend and
graceful falling back to overwritten behavior is preferable.
Added exit status value 8, which means download failed because
server did not support resume.
* src/AbstractCommand.cc
* src/DefaultPieceStorage.cc
* src/DownloadCommand.cc
* src/DownloadResultCode.h
* src/FileEntry.h
* src/FtpNegotiationCommand.cc
* src/HttpResponse.cc
* src/HttpResponseCommand.cc
* src/OptionHandlerFactory.cc
* src/RequestGroup.cc
* src/RequestGroup.h
* src/SegmentMan.cc
* src/SegmentMan.h
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/DefaultPieceStorageTest.cc
* test/SegmentManTest.cc
2010-03-28 07:23:33 +00:00
Tatsuhiro Tsujikawa
de8fef01f3
2010-03-21 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Defined cuid_t as int64_t. Removed texts containing "CUID#%D" from
translatable texts because it is used in log and debugging
purpose.
2010-03-21 07:05:49 +00:00
Tatsuhiro Tsujikawa
2c2d19d5d5
2010-03-08 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Added debug logs.
* src/FileEntry.cc
* src/SegmentMan.cc
2010-03-08 14:34:32 +00:00
Tatsuhiro Tsujikawa
8d09b069e2
2010-03-06 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Added Time global::wallclock to cache "current time" to reduce the
call gettimeofday(). Global variables are now in namespace global.
* src/AbstractCommand.cc
* src/ActivePeerConnectionCommand.cc
* src/AdaptiveURISelector.cc
* src/BtLeecherStateChoke.cc
* src/BtLeecherStateChoke.h
* src/BtSeederStateChoke.cc
* src/BtSeederStateChoke.h
* src/BtStopDownloadCommand.cc
* src/ConsoleStatCalc.cc
* src/DHTBucket.cc
* src/DHTGetPeersCommand.cc
* src/DHTMessageTrackerEntry.cc
* src/DHTNode.cc
* src/DHTPeerAnnounceEntry.cc
* src/DHTPeerAnnounceStorage.cc
* src/DHTSetup.cc
* src/DefaultBtAnnounce.cc
* src/DefaultBtInteractive.cc
* src/DefaultBtMessageDispatcher.cc
* src/DefaultPeerStorage.cc
* src/DefaultPieceStorage.cc
* src/DownloadCommand.cc
* src/DownloadEngine.cc
* src/FileEntry.cc
* src/HttpServerBodyCommand.cc
* src/HttpServerCommand.cc
* src/HttpServerResponseCommand.cc
* src/LpdMessageDispatcher.cc
* src/MultiUrlRequestInfo.cc
* src/Peer.cc
* src/Peer.h
* src/PeerAbstractCommand.cc
* src/PeerStat.h
* src/RequestSlot.cc
* src/RequestSlot.h
* src/SegmentMan.cc
* src/ServerStatMan.cc
* src/SleepCommand.cc
* src/SpeedCalc.cc
* src/SpeedCalc.h
* src/TimeA2.cc
* src/TimeA2.h
* src/TimeBasedCommand.cc
* src/TimeSeedCriteria.h
* src/UTMetadataRequestTracker.h
* src/UTPexExtensionMessage.cc
* src/wallclock.h
2010-03-06 08:29:53 +00:00
Tatsuhiro Tsujikawa
72e475dfde
2010-03-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Avoid to calculate end() iterator in each loop. std::deque is
particularly slow. Make sure that recalculate end iterator if
element is erased during loop.
2010-02-28 16:04:52 +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
e227e53d7b
2010-02-09 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
...
Wrapped logger->debug(...) with if(logger->debug()) { ... }
* src/AbstractCommand.cc
* src/AdaptiveURISelector.cc
* src/BtPieceMessage.cc
* src/BtPortMessage.cc
* src/CreateRequestCommand.cc
* src/DHTAbstractNodeLookupTask.cc
* src/DHTBucket.cc
* src/DHTGetPeersCommand.cc
* src/DHTMessageDispatcherImpl.cc
* src/DHTMessageFactoryImpl.cc
* src/DHTMessageTracker.cc
* src/DHTPeerAnnounceStorage.cc
* src/DHTRoutingTable.cc
* src/DHTSetup.cc
* src/DefaultBtAnnounce.cc
* src/DefaultBtInteractive.cc
* src/DefaultBtMessageDispatcher.cc
* src/DefaultBtMessageReceiver.cc
* src/DefaultBtProgressInfoFile.cc
* src/DefaultBtRequestFactory.cc
* src/DefaultPeerStorage.cc
* src/DefaultPieceStorage.cc
* src/DownloadCommand.cc
* src/DownloadEngine.cc
* src/EpollEventPoll.cc
* src/FileAllocationCommand.cc
* src/FileEntry.cc
* src/FtpNegotiationCommand.cc
* src/HandshakeExtensionMessage.cc
* src/HttpListenCommand.cc
* src/HttpServer.cc
* src/HttpSkipResponseCommand.cc
* src/IteratableChunkChecksumValidator.cc
* src/Logger.h
* src/MSEHandshake.cc
* src/MetalinkPostDownloadHandler.cc
* src/MultiDiskAdaptor.cc
* src/PeerAbstractCommand.cc
* src/PeerConnection.cc
* src/PeerListenCommand.cc
* src/PeerReceiveHandshakeCommand.cc
* src/RequestGroup.cc
* src/RequestGroupMan.cc
* src/SegmentMan.cc
* src/SelectEventPoll.cc
* src/ServerStat.cc
* src/SimpleBtMessage.cc
* src/SocketCore.cc
* src/TrackerWatcherCommand.cc
* src/UTMetadataDataExtensionMessage.cc
* src/UTMetadataRequestFactory.cc
* src/UTMetadataRequestTracker.cc
* src/XmlRpcMethod.cc
2010-02-09 12:20:20 +00:00