瀏覽代碼

2008-09-02 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Contact tracker frequently when the number of connections are 0	
and
	download is not finished yet.
	* src/ActivePeerConnectionCommand.cc
	* src/BtAnnounce.h
	* src/DefaultBtAnnounce.cc
	* src/DefaultBtAnnounce.h
	* test/MockBtAnnounce.h
Tatsuhiro Tsujikawa 17 年之前
父節點
當前提交
574ca31e38
共有 6 個文件被更改,包括 29 次插入3 次删除
  1. 10 0
      ChangeLog
  2. 5 0
      src/ActivePeerConnectionCommand.cc
  3. 5 0
      src/BtAnnounce.h
  4. 5 0
      src/DefaultBtAnnounce.cc
  5. 2 3
      src/DefaultBtAnnounce.h
  6. 2 0
      test/MockBtAnnounce.h

+ 10 - 0
ChangeLog

@@ -1,3 +1,13 @@
+2008-09-02  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Contact tracker frequently when the number of connections are 0	and
+	download is not finished yet.
+	* src/ActivePeerConnectionCommand.cc
+	* src/BtAnnounce.h
+	* src/DefaultBtAnnounce.cc
+	* src/DefaultBtAnnounce.h
+	* test/MockBtAnnounce.h
+	
 2008-09-02  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Moved threthold values to UTPexExtensionMessage.

+ 5 - 0
src/ActivePeerConnectionCommand.cc

@@ -47,6 +47,7 @@
 #include "Option.h"
 #include "BtConstants.h"
 #include "SocketCore.h"
+#include "BtAnnounce.h"
 
 namespace aria2 {
 
@@ -96,6 +97,10 @@ bool ActivePeerConnectionCommand::execute() {
 	PeerHandle peer = peerStorage->getUnusedPeer();
 	connectToPeer(peer);
       }
+      if(btRuntime->getConnections() == 0 &&
+	 !pieceStorage->downloadFinished()) {
+	btAnnounce->overrideMinInterval(BtAnnounce::DEFAULT_ANNOUNCE_INTERVAL);
+      }
     }
   }
   e->commands.push_back(this);

+ 5 - 0
src/BtAnnounce.h

@@ -37,6 +37,7 @@
 
 #include "common.h"
 #include "SharedHandle.h"
+#include "a2time.h"
 #include <string>
 
 namespace aria2 {
@@ -104,6 +105,8 @@ public:
    */
   virtual void shuffleAnnounce() = 0;
 
+  virtual void overrideMinInterval(time_t interval) = 0;
+
   static const std::string FAILURE_REASON;
 
   static const std::string WARNING_MESSAGE;
@@ -119,6 +122,8 @@ public:
   static const std::string INCOMPLETE;
 
   static const std::string PEERS;
+
+  static const unsigned int DEFAULT_ANNOUNCE_INTERVAL = 120;
 };
 
 typedef SharedHandle<BtAnnounce> BtAnnounceHandle;

+ 5 - 0
src/DefaultBtAnnounce.cc

@@ -316,4 +316,9 @@ PeerStorageHandle DefaultBtAnnounce::getPeerStorage() const
   return peerStorage;
 }
 
+void DefaultBtAnnounce::overrideMinInterval(time_t interval)
+{
+  minInterval = interval;
+}
+
 } // namespace aria2

+ 2 - 3
src/DefaultBtAnnounce.h

@@ -67,9 +67,6 @@ private:
   SharedHandle<BtRuntime> btRuntime;
   SharedHandle<PieceStorage> pieceStorage;
   SharedHandle<PeerStorage> peerStorage;
-
-  static const unsigned int DEFAULT_ANNOUNCE_INTERVAL = 120;
-
 public:
   DefaultBtAnnounce(const SharedHandle<BtContext>& btContext,
 		    const Option* option);
@@ -115,6 +112,8 @@ public:
 
   virtual void shuffleAnnounce();
 
+  virtual void overrideMinInterval(time_t interval);
+
   void generateKey();
 
   void setRandomizer(const SharedHandle<Randomizer>& randomizer);

+ 2 - 0
test/MockBtAnnounce.h

@@ -56,6 +56,8 @@ public:
     return peerId;
   }
 
+  virtual void overrideMinInterval(time_t interval) {}
+
   void setPeerId(const std::string& peerId) {
     this->peerId = peerId;
   }