![]() |
User Manual, Developers Guide and API Documentation |
![]() |
int globalVariable = 0; void freeFunction() { wns::logger::Logger log("tests", "SchedulerBestPractices"); MESSAGE_BEGIN(NORMAL, log, m, "freeFunction is called."); m << "Setting globalVariable to 101"; MESSAGE_END(); globalVariable = 101; }
wns::events::scheduler::Interface* scheduler = NULL; scheduler = wns::simulator::getEventScheduler(); wns::events::scheduler::Callable c = &freeFunction; scheduler->scheduleDelay(c, 10.0);
wns::events::scheduler::Interface* scheduler = NULL; scheduler = wns::simulator::getEventScheduler(); wns::events::scheduler::Callable c = boost::bind(&freeFunction); scheduler->scheduleNow(c);
class ClassWithCallback { int memberVariable_; wns::logger::Logger logger_; public: ClassWithCallback() : memberVariable_(0), logger_("tests", "SchedulerBestPractices") { } void callback() { MESSAGE_BEGIN(NORMAL, logger_, m, ""); m << "ClassWithCallback::callback is called." << "Setting globalVariable to 101"; MESSAGE_END(); this->memberVariable_ = 101; } int getMemberVariable() { return memberVariable_; } void setMemberVariable(int value) { memberVariable_ = value; } };
wns::events::scheduler::Interface* scheduler = NULL; scheduler = wns::simulator::getEventScheduler(); // Create a Smart Pointer to a new ClassWithCallback instance ClassWithCallback* classWithCallbackPtr = new ClassWithCallback(); wns::events::scheduler::Callable c = boost::bind(&ClassWithCallback::callback, classWithCallbackPtr); scheduler->scheduleDelay(c, 10.0);
wns::events::scheduler::Interface* scheduler = NULL; scheduler = wns::simulator::getEventScheduler(); ClassWithCallback classWithCallbackInstance; wns::events::scheduler::Callable c = boost::bind(&ClassWithCallback::callback, boost::ref(classWithCallbackInstance)); scheduler->scheduleDelay(c, 10.0);
wns::events::scheduler::Interface* scheduler = NULL; scheduler = wns::simulator::getEventScheduler(); ClassWithCallback* classWithCallbackPtr = new ClassWithCallback(); wns::events::scheduler::Callable c1 = boost::bind( &ClassWithCallback::setMemberVariable, classWithCallbackPtr, 201); wns::events::scheduler::Callable c2 = boost::bind( &ClassWithCallback::setMemberVariable, classWithCallbackPtr, 302); scheduler->scheduleDelay(c1, 11.0); scheduler->scheduleDelay(c2, 10.0);
schedule or scheduleDelay method of the eventschdeduler these methods return an instance of IEventPtr . This is a handle for your scheduled event and can be used to remove it from the scheduler queue again. This is demonstrated in the next example.
wns::events::scheduler::Callable timeout = &freeFunction; // Remember a handle of your event IEventPtr timeoutHandle = scheduler->scheduleDelay(timeout, 15.0); // Use the handle to cancel an event that was already scheduled scheduler->cancelEvent(timeoutHandle);
1.5.5