diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-10-02 14:38:37 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-10-02 14:38:37 +0000 |
| commit | 584af68e190898da1bc1676baf743288ba46af19 (patch) | |
| tree | e9391d53bb3a43568de4bd4161c4686989108c57 /src/DHTTaskQueueImpl.cc | |
| parent | 7375a778c4ad3acda07b138d8530974df490be29 (diff) | |
2010-10-02 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
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
Diffstat (limited to 'src/DHTTaskQueueImpl.cc')
| -rw-r--r-- | src/DHTTaskQueueImpl.cc | 51 |
1 files changed, 26 insertions, 25 deletions
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<DHTTask>& task, - std::deque<SharedHandle<DHTTask> >& 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<DHTTask>& task) { - periodicTaskQueue1_.push_back(task); + periodicTaskQueue1_.addTask(task); } void DHTTaskQueueImpl::addPeriodicTask2(const SharedHandle<DHTTask>& task) { - periodicTaskQueue2_.push_back(task); + periodicTaskQueue2_.addTask(task); } void DHTTaskQueueImpl::addImmediateTask(const SharedHandle<DHTTask>& task) { - immediateTaskQueue_.push_back(task); + immediateTaskQueue_.addTask(task); } } // namespace aria2 |
