/* */ #include "DHTTaskQueueImpl.h" #include "DHTTask.h" DHTTaskQueueImpl::DHTTaskQueueImpl():_periodicTask1(0), _periodicTask2(0), _immediateTask(0) {} DHTTaskQueueImpl::~DHTTaskQueueImpl() {} void DHTTaskQueueImpl::executeTask(DHTTaskHandle& task, DHTTasks& taskQueue) { while(1) { if(task.isNull() || task->finished()) { task = 0; 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 DHTTaskHandle& task) { _periodicTaskQueue1.push_back(task); } void DHTTaskQueueImpl::addPeriodicTask2(const DHTTaskHandle& task) { _periodicTaskQueue2.push_back(task); } void DHTTaskQueueImpl::addImmediateTask(const DHTTaskHandle& task) { _immediateTaskQueue.push_back(task); }