From 584af68e190898da1bc1676baf743288ba46af19 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 2 Oct 2010 14:38:37 +0000 Subject: 2010-10-02 Tatsuhiro Tsujikawa Execute 5 DHT tasks concurrently in each task queue. * src/DHTTaskExecutor.cc * src/DHTTaskExecutor.h * src/DHTTaskQueueImpl.cc * src/DHTTaskQueueImpl.h * src/Makefile.am * test/DHTTaskExecutorTest.cc * test/Makefile.am * test/MockDHTTask.h --- src/DHTTaskQueueImpl.cc | 51 +++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 25 deletions(-) (limited to 'src/DHTTaskQueueImpl.cc') diff --git a/src/DHTTaskQueueImpl.cc b/src/DHTTaskQueueImpl.cc index 65cff073..2c46f514 100644 --- a/src/DHTTaskQueueImpl.cc +++ b/src/DHTTaskQueueImpl.cc @@ -34,51 +34,52 @@ /* copyright --> */ #include "DHTTaskQueueImpl.h" #include "DHTTask.h" +#include "Logger.h" +#include "LogFactory.h" namespace aria2 { -DHTTaskQueueImpl::DHTTaskQueueImpl() {} +namespace { +const size_t NUM_CONCURRENT_TASK = 5; +} -DHTTaskQueueImpl::~DHTTaskQueueImpl() {} +DHTTaskQueueImpl::DHTTaskQueueImpl(): + periodicTaskQueue1_(NUM_CONCURRENT_TASK), + periodicTaskQueue2_(NUM_CONCURRENT_TASK), + immediateTaskQueue_(NUM_CONCURRENT_TASK), + logger_(LogFactory::getInstance()) {} -void DHTTaskQueueImpl::executeTask(SharedHandle& task, - std::deque >& taskQueue) -{ - while(1) { - if(task.isNull() || task->finished()) { - task.reset(); - if(taskQueue.empty()) { - break; - } - task = taskQueue.front(); - taskQueue.erase(taskQueue.begin()); - task->startup(); - } else { - break; - } - } -} +DHTTaskQueueImpl::~DHTTaskQueueImpl() {} void DHTTaskQueueImpl::executeTask() { - executeTask(periodicTask1_, periodicTaskQueue1_); - executeTask(periodicTask2_, periodicTaskQueue2_); - executeTask(immediateTask_, immediateTaskQueue_); + if(logger_->debug()) { + logger_->debug("Updating periodicTaskQueue1"); + } + periodicTaskQueue1_.update(); + if(logger_->debug()) { + logger_->debug("Updating periodicTaskQueue2"); + } + periodicTaskQueue2_.update(); + if(logger_->debug()) { + logger_->debug("Updating immediateTaskQueue"); + } + immediateTaskQueue_.update(); } void DHTTaskQueueImpl::addPeriodicTask1(const SharedHandle& task) { - periodicTaskQueue1_.push_back(task); + periodicTaskQueue1_.addTask(task); } void DHTTaskQueueImpl::addPeriodicTask2(const SharedHandle& task) { - periodicTaskQueue2_.push_back(task); + periodicTaskQueue2_.addTask(task); } void DHTTaskQueueImpl::addImmediateTask(const SharedHandle& task) { - immediateTaskQueue_.push_back(task); + immediateTaskQueue_.addTask(task); } } // namespace aria2 -- cgit