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,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.

View File

@ -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

View File

@ -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

View File

@ -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;