mirror of https://github.com/aria2/aria2
2009-11-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed the bug that slow server is not knocked down in favor of faster one. * src/AbstractCommand.cc * src/DefaultPieceStorage.cc * src/DefaultPieceStorage.h * src/PieceStorage.h * src/UnknownLengthPieceStorage.cc * src/UnknownLengthPieceStorage.h * test/MockPieceStorage.hpull/1/head
parent
39c2b57842
commit
60e3e46c52
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2009-11-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Fixed the bug that slow server is not knocked down in favor of
|
||||||
|
faster one.
|
||||||
|
* src/AbstractCommand.cc
|
||||||
|
* src/DefaultPieceStorage.cc
|
||||||
|
* src/DefaultPieceStorage.h
|
||||||
|
* src/PieceStorage.h
|
||||||
|
* src/UnknownLengthPieceStorage.cc
|
||||||
|
* src/UnknownLengthPieceStorage.h
|
||||||
|
* test/MockPieceStorage.h
|
||||||
|
|
||||||
2009-11-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2009-11-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Fixed the bug that Request object is not added to
|
Fixed the bug that Request object is not added to
|
||||||
|
|
|
@ -105,9 +105,9 @@ bool AbstractCommand::execute() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// TODO it is not needed to check other PeerStats every time.
|
// TODO it is not needed to check other PeerStats every time.
|
||||||
// Find faster Request when this is the only active Request
|
// Find faster Request when no segment is available.
|
||||||
if(!req.isNull() && _requestGroup->getNumStreamConnection() == 1 &&
|
if(!req.isNull() && _fileEntry->countPooledRequest() > 0 &&
|
||||||
_fileEntry->countPooledRequest() > 0) {
|
!_requestGroup->getPieceStorage()->hasMissingUnusedPiece()) {
|
||||||
SharedHandle<Request> fasterRequest = _fileEntry->findFasterRequest(req);
|
SharedHandle<Request> fasterRequest = _fileEntry->findFasterRequest(req);
|
||||||
if(!fasterRequest.isNull()) {
|
if(!fasterRequest.isNull()) {
|
||||||
logger->info("CUID#%d - Use faster Request hostname=%s, port=%u",
|
logger->info("CUID#%d - Use faster Request hostname=%s, port=%u",
|
||||||
|
|
|
@ -196,6 +196,12 @@ bool DefaultPieceStorage::hasMissingPiece(const PeerHandle& peer)
|
||||||
peer->getBitfieldLength());
|
peer->getBitfieldLength());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DefaultPieceStorage::hasMissingUnusedPiece()
|
||||||
|
{
|
||||||
|
size_t index;
|
||||||
|
return bitfieldMan->getFirstMissingUnusedIndex(index);
|
||||||
|
}
|
||||||
|
|
||||||
PieceHandle DefaultPieceStorage::getMissingPiece(const SharedHandle<Peer>& peer)
|
PieceHandle DefaultPieceStorage::getMissingPiece(const SharedHandle<Peer>& peer)
|
||||||
{
|
{
|
||||||
return getMissingPiece(peer->getBitfield(), peer->getBitfieldLength());
|
return getMissingPiece(peer->getBitfield(), peer->getBitfieldLength());
|
||||||
|
|
|
@ -121,6 +121,8 @@ public:
|
||||||
|
|
||||||
virtual bool hasMissingPiece(const SharedHandle<Peer>& peer);
|
virtual bool hasMissingPiece(const SharedHandle<Peer>& peer);
|
||||||
|
|
||||||
|
virtual bool hasMissingUnusedPiece();
|
||||||
|
|
||||||
virtual SharedHandle<Piece> getMissingPiece(const SharedHandle<Peer>& peer);
|
virtual SharedHandle<Piece> getMissingPiece(const SharedHandle<Peer>& peer);
|
||||||
|
|
||||||
virtual SharedHandle<Piece> getMissingFastPiece(const SharedHandle<Peer>& peer);
|
virtual SharedHandle<Piece> getMissingFastPiece(const SharedHandle<Peer>& peer);
|
||||||
|
|
|
@ -62,6 +62,8 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual bool hasMissingPiece(const SharedHandle<Peer>& peer) = 0;
|
virtual bool hasMissingPiece(const SharedHandle<Peer>& peer) = 0;
|
||||||
|
|
||||||
|
virtual bool hasMissingUnusedPiece() = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a piece that the peer has but localhost doesn't.
|
* Returns a piece that the peer has but localhost doesn't.
|
||||||
* The piece will be marked "used" status in order to prevent other command
|
* The piece will be marked "used" status in order to prevent other command
|
||||||
|
|
|
@ -78,6 +78,11 @@ bool UnknownLengthPieceStorage::hasMissingPiece(const SharedHandle<Peer>& peer)
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool UnknownLengthPieceStorage::hasMissingUnusedPiece()
|
||||||
|
{
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
SharedHandle<Piece> UnknownLengthPieceStorage::getMissingPiece(const SharedHandle<Peer>& peer)
|
SharedHandle<Piece> UnknownLengthPieceStorage::getMissingPiece(const SharedHandle<Peer>& peer)
|
||||||
{
|
{
|
||||||
abort();
|
abort();
|
||||||
|
|
|
@ -73,6 +73,8 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual bool hasMissingPiece(const SharedHandle<Peer>& peer);
|
virtual bool hasMissingPiece(const SharedHandle<Peer>& peer);
|
||||||
|
|
||||||
|
virtual bool hasMissingUnusedPiece();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a piece that the peer has but localhost doesn't.
|
* Returns a piece that the peer has but localhost doesn't.
|
||||||
* The piece will be marked "used" status in order to prevent other command
|
* The piece will be marked "used" status in order to prevent other command
|
||||||
|
|
|
@ -44,6 +44,11 @@ public:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual bool hasMissingUnusedPiece()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
virtual SharedHandle<Piece> getMissingPiece(const SharedHandle<Peer>& peer) {
|
virtual SharedHandle<Piece> getMissingPiece(const SharedHandle<Peer>& peer) {
|
||||||
return SharedHandle<Piece>(new Piece());
|
return SharedHandle<Piece>(new Piece());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue