Explorar o código

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 %!s(int64=17) %!d(string=hai) anos
pai
achega
574ca31e38

+ 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;
   }