/* */ #include "DHTTaskQueueImpl.h" #include "DHTTask.h" namespace aria2 { DHTTaskQueueImpl::DHTTaskQueueImpl() {} DHTTaskQueueImpl::~DHTTaskQueueImpl() {} 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; } } } void DHTTaskQueueImpl::executeTask() { executeTask(periodicTask1_, periodicTaskQueue1_); executeTask(periodicTask2_, periodicTaskQueue2_); executeTask(immediateTask_, immediateTaskQueue_); } void DHTTaskQueueImpl::addPeriodicTask1(const SharedHandle& task) { periodicTaskQueue1_.push_back(task); } void DHTTaskQueueImpl::addPeriodicTask2(const SharedHandle& task) { periodicTaskQueue2_.push_back(task); } void DHTTaskQueueImpl::addImmediateTask(const SharedHandle& task) { immediateTaskQueue_.push_back(task); } } // namespace aria2