diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-11-07 12:36:33 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-11-07 12:36:33 +0000 |
| commit | b4f7588ba285a8e33dc07acfa730491285cba18e (patch) | |
| tree | 5f0537dee50b0036fd40c2f13fdb4175d28f8b3e /src/DownloadCommand.cc | |
| parent | dfd40dff54670fd3768811acf1a38be6c88b009f (diff) | |
2007-11-07 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Reflect the download length of in-flight pieces.
It makes the download length readout more precise.
* src/DefaultPieceStorage.{h, cc}
* test/DefaultPieceStorageTest.cc
* src/a2functional.h
* test/a2functionalTest.cc
Lower CPU load when --max-download-limit is used.
There is up and down in speed indicator when enabling
http-pipelining but a download goes well. I think the problem is
that
because http-pipelining is enabled, DownloadCommand is created
for
each segment and in its constructor, PeerStat::downloadStart()
is
called. In PeerStat::downloadStart(), speed calculation object
is
reseted, which makes download speed zero.
* src/DownloadCommand.cc
Rewritten using accumulate.
* src/RequestGroupMan.cc (calculateStat)
Code clearnup.
* src/FtpNegotiationCommand.cc
* src/HttpResponseCommand.cc
Diffstat (limited to 'src/DownloadCommand.cc')
| -rw-r--r-- | src/DownloadCommand.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/DownloadCommand.cc b/src/DownloadCommand.cc index 9e4cb943..9252911b 100644 --- a/src/DownloadCommand.cc +++ b/src/DownloadCommand.cc @@ -79,10 +79,11 @@ bool DownloadCommand::executeInternal() { // TODO we need to specify the sum of all segmentMan's download speed here. if(maxDownloadSpeedLimit > 0 && maxDownloadSpeedLimit < _requestGroup->getSegmentMan()->calculateDownloadSpeed()) { - Util::usleep(1); e->commands.push_back(this); + disableReadCheckSocket(); return false; } + setReadCheckSocket(socket); SegmentHandle segment = _segments.front(); int32_t BUFSIZE = 16*1024; |
