Преглед изворни кода

2007-12-06 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Fixed the bug: aria2 doesn't utilize fast set index offered by peer.
	* src/Peer.{h, cc}
	* src/DefaultPieceStorage.cc
	* test/DefaultPieceStorageTest.cc
Tatsuhiro Tsujikawa пре 18 година
родитељ
комит
30739b0763
5 измењених фајлова са 21 додато и 22 уклоњено
  1. 7 0
      ChangeLog
  2. 3 3
      src/DefaultPieceStorage.cc
  3. 0 11
      src/Peer.cc
  4. 10 7
      src/Peer.h
  5. 1 1
      test/DefaultPieceStorageTest.cc

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+2007-12-06  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Fixed the bug: aria2 doesn't utilize fast set index offered by peer.
+	* src/Peer.{h, cc}
+	* src/DefaultPieceStorage.cc
+	* test/DefaultPieceStorageTest.cc
+
 2007-12-06  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Rewritten direct I/O support routine

+ 3 - 3
src/DefaultPieceStorage.cc

@@ -166,11 +166,11 @@ PieceHandle DefaultPieceStorage::getMissingPiece(const PeerHandle& peer)
 int32_t DefaultPieceStorage::getMissingFastPieceIndex(const PeerHandle& peer)
 {
   int32_t index = -1;
-  if(peer->isFastExtensionEnabled() && peer->countFastSet() > 0) {
+  if(peer->isFastExtensionEnabled() && peer->countPeerAllowedIndexSet() > 0) {
     BitfieldMan tempBitfield(bitfieldMan->getBlockLength(),
 			     bitfieldMan->getTotalLength());
-    for(Integers::const_iterator itr = peer->getFastSet().begin();
-	itr != peer->getFastSet().end(); itr++) {
+    for(Integers::const_iterator itr = peer->getPeerAllowedIndexSet().begin();
+	itr != peer->getPeerAllowedIndexSet().end(); itr++) {
       if(!bitfieldMan->isBitSet(index) && peer->hasPiece(*itr)) {
 	tempBitfield.setBit(*itr);
       }

+ 0 - 11
src/Peer.cc

@@ -114,22 +114,11 @@ void Peer::resetStatus() {
   snubbing = false;
   fastExtensionEnabled = false;
   latency = DEFAULT_LATENCY;
-  fastSet.clear();
   peerAllowedIndexSet.clear();
   amAllowedIndexSet.clear();
   peerStat.reset();
 }
 
-bool Peer::isInFastSet(int32_t index) const {
-  return find(fastSet.begin(), fastSet.end(), index) != fastSet.end();
-}
-
-void Peer::addFastSetIndex(int32_t index) {
-  if(!isInFastSet(index)) {
-    fastSet.push_back(index);
-  }
-}
-
 bool Peer::isInPeerAllowedIndexSet(int32_t index) const {
   return find(peerAllowedIndexSet.begin(), peerAllowedIndexSet.end(),
 	      index) != peerAllowedIndexSet.end();

+ 10 - 7
src/Peer.h

@@ -63,8 +63,6 @@ private:
   unsigned char peerId[PEER_ID_LENGTH];
   BitfieldMan* bitfield;
   bool fastExtensionEnabled;
-  // allowed fast indexes that peer has sent by Allowed Fast message
-  Integers fastSet;
   // fast index set which a peer has sent to localhost.
   Integers peerAllowedIndexSet;
   // fast index set which localhost has sent to a peer.
@@ -179,14 +177,19 @@ public:
   }
   bool isFastExtensionEnabled() const { return fastExtensionEnabled; }
 
-  void addFastSetIndex(int32_t index);
-  const Integers& getFastSet() const { return fastSet; }
-  bool isInFastSet(int32_t index) const;
-  int32_t countFastSet() const { return fastSet.size(); }
-
   void addPeerAllowedIndex(int32_t index);
   bool isInPeerAllowedIndexSet(int32_t index) const;
 
+  int32_t countPeerAllowedIndexSet() const
+  {
+    return peerAllowedIndexSet.size();
+  }
+
+  const Integers& getPeerAllowedIndexSet() const
+  {
+    return peerAllowedIndexSet;
+  }
+
   void addAmAllowedIndex(int32_t index);
   bool isInAmAllowedIndexSet(int32_t index) const;
 

+ 1 - 1
test/DefaultPieceStorageTest.cc

@@ -100,7 +100,7 @@ void DefaultPieceStorageTest::testGetMissingFastPiece() {
 
   peer->setAllBitfield();
   peer->setFastExtensionEnabled(true);
-  peer->addFastSetIndex(2);
+  peer->addPeerAllowedIndex(2);
 
   PieceHandle piece = pss.getMissingFastPiece(peer);
   CPPUNIT_ASSERT_EQUAL(string("piece: index=2, length=128"),