summaryrefslogtreecommitdiff
path: root/src/DHTTaskQueueImpl.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-10-02 14:38:37 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-10-02 14:38:37 +0000
commit584af68e190898da1bc1676baf743288ba46af19 (patch)
treee9391d53bb3a43568de4bd4161c4686989108c57 /src/DHTTaskQueueImpl.cc
parent7375a778c4ad3acda07b138d8530974df490be29 (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.cc51
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