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
pull/1/head
Tatsuhiro Tsujikawa 2008-02-08 16:11:21 +00:00
parent 1b7c198289
commit 6fe7b7c8f3
4 changed files with 25 additions and 4 deletions

View File

@ -1,8 +1,15 @@
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> 2008-02-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Removed "using namespace std;" from all sources. Appended std:: prefix to c++ Removed "using namespace std;" from all sources. Appended std:: prefix to c++
standard classes. standard classes.
Included string.h where mem* function are used. Included string.h where mem* function are used.
Added namespace aria2.
2008-02-06 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com> 2008-02-06 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

View File

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

View File

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

View File

@ -57,6 +57,7 @@
#include "DHTTask.h" #include "DHTTask.h"
#include "DHTRoutingTableDeserializer.h" #include "DHTRoutingTableDeserializer.h"
#include "DHTRegistry.h" #include "DHTRegistry.h"
#include "DHTBucketRefreshTask.h"
#include "CUIDCounter.h" #include "CUIDCounter.h"
#include "prefs.h" #include "prefs.h"
#include "Option.h" #include "Option.h"
@ -175,7 +176,9 @@ Commands DHTSetup::setup(DownloadEngine* e, const Option* option)
routingTable->addNode(*i); routingTable->addNode(*i);
} }
if(!desnodes.empty() && deserializer.getSerializedTime().elapsed(DHT_BUCKET_REFRESH_INTERVAL)) { 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; Commands commands;