BWAPI
|
00001 #pragma once 00002 #include "Scheduler.h" 00003 #include "../SparAIContainer.h" 00004 00008 class SchedulerTask : protected Scheduler::InternalSchedulerTask 00009 { 00010 public: 00018 SchedulerTask(const Component& owner, unsigned int priority, size_t period, size_t waitingTimeBeforeExecution) 00019 : Scheduler::InternalSchedulerTask(owner) 00020 , m_priority(priority) 00021 , m_period(period) 00022 , m_waitingTimeBeforeExecution(waitingTimeBeforeExecution) 00023 {} 00024 00028 bool isActive() const 00029 { 00030 return Scheduler::InternalSchedulerTask::isActive(); 00031 } 00032 00037 void setWaitingTimeBeforeExecution(size_t waitingTimeBeforeExecution) 00038 { 00039 m_waitingTimeBeforeExecution = waitingTimeBeforeExecution; 00040 } 00041 00045 void activate() 00046 { 00047 assert(!isActive()); 00048 Spar->getScheduler().activate(this, m_priority, m_period, m_waitingTimeBeforeExecution); 00049 } 00050 00054 void deactivate() 00055 { 00056 Spar->getScheduler().deactivate(this); 00057 } 00058 00059 protected: 00063 unsigned int m_priority; 00064 00068 size_t m_period; 00069 00073 size_t m_waitingTimeBeforeExecution; 00074 00075 }; 00076 00077 #define SCHEDULER_EVENT(Type, Function) \ 00078 class SchedulerTask_##Type_##Function : public SchedulerTask \ 00079 { \ 00080 public: \ 00081 SchedulerTask_##Type_##Function(Type& object, unsigned int priority, size_t period, size_t waitingTimeBeforeExecution) \ 00082 : SchedulerTask(object, priority, period, waitingTimeBeforeExecution) \ 00083 , m_object(object) {} \ 00084 virtual ~SchedulerTask_##Type_##Function() {} \ 00085 protected: \ 00086 virtual void runV() \ 00087 { \ 00088 m_object.Function(); \ 00089 } \ 00090 Type& m_object; \ 00091 }