Ver código fonte

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

	Force refresh bucket when startup if certain time has 
passed(currently 15 minutes).
	* src/DHTBucketRefreshTask.{h, cc}
	* src/DHTSetup.cc
Tatsuhiro Tsujikawa 17 anos atrás
pai
commit
6fe7b7c8f3
4 arquivos alterados com 25 adições e 4 exclusões
  1. 8 1
      ChangeLog
  2. 8 2
      src/DHTBucketRefreshTask.cc
  3. 5 0
      src/DHTBucketRefreshTask.h
  4. 4 1
      src/DHTSetup.cc

+ 8 - 1
ChangeLog

@@ -1,9 +1,16 @@
+2008-02-09  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Force refresh bucket when startup if certain time has passed(currently 15 minutes).
+	* src/DHTBucketRefreshTask.{h, cc}
+	* src/DHTSetup.cc
+
 2008-02-08  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Removed "using namespace std;" from all sources. Appended std:: prefix to c++
 	standard classes.
 	Included string.h where mem* function are used.
-
+	Added namespace aria2.
+	
 2008-02-06  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Create directory before saving DHT routing table.

+ 8 - 2
src/DHTBucketRefreshTask.cc

@@ -44,7 +44,8 @@
 
 namespace aria2 {
 
-DHTBucketRefreshTask::DHTBucketRefreshTask() {}
+DHTBucketRefreshTask::DHTBucketRefreshTask():
+  _forceRefresh(false) {}
 
 DHTBucketRefreshTask::~DHTBucketRefreshTask() {}
 
@@ -52,7 +53,7 @@ void DHTBucketRefreshTask::startup()
 {
   std::deque<SharedHandle<DHTBucket> > buckets = _routingTable->getBuckets();
   for(std::deque<SharedHandle<DHTBucket> >::iterator i = buckets.begin(); i != buckets.end(); ++i) {
-    if((*i)->needsRefresh()) {
+    if(_forceRefresh || (*i)->needsRefresh()) {
       (*i)->notifyUpdate();
       unsigned char targetID[DHT_ID_LENGTH];
       (*i)->getRandomNodeID(targetID);
@@ -70,4 +71,9 @@ void DHTBucketRefreshTask::startup()
   _finished = true;
 }
 
+void DHTBucketRefreshTask::setForceRefresh(bool forceRefresh)
+{
+  _forceRefresh = forceRefresh;
+}
+
 } // namespace aria2

+ 5 - 0
src/DHTBucketRefreshTask.h

@@ -40,12 +40,17 @@
 namespace aria2 {
 
 class DHTBucketRefreshTask:public DHTAbstractTask {
+private:
+  bool _forceRefresh;
+
 public:
   DHTBucketRefreshTask();
 
   virtual ~DHTBucketRefreshTask();
 
   virtual void startup();
+
+  void setForceRefresh(bool forceRefresh);
 };
 
 } // namespace aria2

+ 4 - 1
src/DHTSetup.cc

@@ -57,6 +57,7 @@
 #include "DHTTask.h"
 #include "DHTRoutingTableDeserializer.h"
 #include "DHTRegistry.h"
+#include "DHTBucketRefreshTask.h"
 #include "CUIDCounter.h"
 #include "prefs.h"
 #include "Option.h"
@@ -175,7 +176,9 @@ Commands DHTSetup::setup(DownloadEngine* e, const Option* option)
       routingTable->addNode(*i);
     }
     if(!desnodes.empty() && deserializer.getSerializedTime().elapsed(DHT_BUCKET_REFRESH_INTERVAL)) {
-      taskQueue->addPeriodicTask1(taskFactory->createBucketRefreshTask());
+      SharedHandle<DHTBucketRefreshTask> task = taskFactory->createBucketRefreshTask();
+      task->setForceRefresh(true);
+      taskQueue->addPeriodicTask1(task);
     }
 
     Commands commands;