2010-07-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

After change request to faster one, wait at least 10 seconds.
	* src/FileEntry.cc
	* src/FileEntry.h
pull/1/head
Tatsuhiro Tsujikawa 2010-07-11 14:17:05 +00:00
parent 20cea7f693
commit f98a180323
3 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2010-07-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
After change request to faster one, wait at least 10 seconds.
* src/FileEntry.cc
* src/FileEntry.h
2010-07-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> 2010-07-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed ChunkedDecoder. It does not read trailer and final CRLF. Fixed ChunkedDecoder. It does not read trailer and final CRLF.

View File

@ -52,6 +52,7 @@ FileEntry::FileEntry(const std::string& path,
offset_(offset), offset_(offset),
requested_(true), requested_(true),
singleHostMultiConnection_(true), singleHostMultiConnection_(true),
lastFasterReplace_(0),
logger_(LogFactory::getInstance()) {} logger_(LogFactory::getInstance()) {}
FileEntry::FileEntry(): FileEntry::FileEntry():
@ -163,7 +164,9 @@ FileEntry::getRequest
SharedHandle<Request> SharedHandle<Request>
FileEntry::findFasterRequest(const SharedHandle<Request>& base) FileEntry::findFasterRequest(const SharedHandle<Request>& base)
{ {
if(requestPool_.empty()) { const int startupIdleTime = 10;
if(requestPool_.empty() ||
lastFasterReplace_.difference(global::wallclock) < startupIdleTime) {
return SharedHandle<Request>(); return SharedHandle<Request>();
} }
const SharedHandle<PeerStat>& fastest = requestPool_.front()->getPeerStat(); const SharedHandle<PeerStat>& fastest = requestPool_.front()->getPeerStat();
@ -172,7 +175,6 @@ FileEntry::findFasterRequest(const SharedHandle<Request>& base)
} }
const SharedHandle<PeerStat>& basestat = base->getPeerStat(); const SharedHandle<PeerStat>& basestat = base->getPeerStat();
// TODO hard coded value. See PREF_STARTUP_IDLE_TIME // TODO hard coded value. See PREF_STARTUP_IDLE_TIME
const int startupIdleTime = 10;
if(basestat.isNull() || if(basestat.isNull() ||
(basestat->getDownloadStartTime(). (basestat->getDownloadStartTime().
difference(global::wallclock) >= startupIdleTime && difference(global::wallclock) >= startupIdleTime &&
@ -181,6 +183,7 @@ FileEntry::findFasterRequest(const SharedHandle<Request>& base)
SharedHandle<Request> fastestRequest = requestPool_.front(); SharedHandle<Request> fastestRequest = requestPool_.front();
requestPool_.pop_front(); requestPool_.pop_front();
inFlightRequests_.push_back(fastestRequest); inFlightRequests_.push_back(fastestRequest);
lastFasterReplace_.reset();
return fastestRequest; return fastestRequest;
} }
return SharedHandle<Request>(); return SharedHandle<Request>();

View File

@ -48,6 +48,7 @@
#include "URIResult.h" #include "URIResult.h"
#include "DownloadResultCode.h" #include "DownloadResultCode.h"
#include "A2STR.h" #include "A2STR.h"
#include "TimerA2.h"
namespace aria2 { namespace aria2 {
@ -71,6 +72,7 @@ private:
std::deque<URIResult> uriResults_; std::deque<URIResult> uriResults_;
bool singleHostMultiConnection_; bool singleHostMultiConnection_;
std::string originalName_; std::string originalName_;
Timer lastFasterReplace_;
Logger* logger_; Logger* logger_;
void storePool(const SharedHandle<Request>& request); void storePool(const SharedHandle<Request>& request);