diff --git a/ChangeLog b/ChangeLog index 96d7ddbc..fbcc3e39 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,16 @@ +2008-02-09 Tatsuhiro Tsujikawa + + 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 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 Create directory before saving DHT routing table. diff --git a/src/DHTBucketRefreshTask.cc b/src/DHTBucketRefreshTask.cc index d26e3c04..8c8d6cf0 100644 --- a/src/DHTBucketRefreshTask.cc +++ b/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 > buckets = _routingTable->getBuckets(); for(std::deque >::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 diff --git a/src/DHTBucketRefreshTask.h b/src/DHTBucketRefreshTask.h index f2ba9e0f..24106da0 100644 --- a/src/DHTBucketRefreshTask.h +++ b/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 diff --git a/src/DHTSetup.cc b/src/DHTSetup.cc index 208c13ed..d98190ea 100644 --- a/src/DHTSetup.cc +++ b/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 task = taskFactory->createBucketRefreshTask(); + task->setForceRefresh(true); + taskQueue->addPeriodicTask1(task); } Commands commands;