Inherits BaseModule.

Public Types | |
| typedef void( | cleanup )(void *data) |
Public Member Functions | |
| void | init (Timer *t) |
| void | setTimer (unsigned int index, simtime_t when) |
| unsigned int | setTimer (simtime_t when) |
| void | cancelTimer (unsigned int index) |
| float | remainingTimer (unsigned int index) |
| void | setContextPointer (unsigned int index, void *data) |
| void * | contextPointer (unsigned int index) |
| void | setContextDestructor (unsigned int index, cleanup *) |
| void | allocateTimers (unsigned int count) |
| void | deleteTimer (unsigned int index) |
Protected Member Functions | |
| void | checkExists (unsigned int index) |
| virtual void | handleMessage (cMessage *msg) |
| Handle self messages. | |
Protected Attributes | |
| Timer * | timer |
|
std::map< unsigned int, cMessage * > * | timers |
|
std::map< unsigned int, cleanup * > * | destructors |
Definition at line 9 of file TimerCore.h.
| void TimerCore::cancelTimer | ( | unsigned int | index | ) |
Cancel an existing timer set by setTimer() If the timer has not been set, or has already fires, this does nothing Must call initTimers() before using.
| index | Timer to cancel. Must be between 0 and the value given to initTimers() |
Definition at line 58 of file TimerCore.cc.
Referenced by Timer::cancelTimer().
{
Enter_Method_Silent();
checkExists(index);
if ((*timers)[index]->isScheduled())
cancelEvent((*timers)[index]);
}
| void * TimerCore::contextPointer | ( | unsigned int | index | ) |
Retreive a "context pointer" refering to some piece of opaque useful data
| index | Timer number |
Definition at line 113 of file TimerCore.cc.
Referenced by Timer::contextPointer().
{
checkExists(index);
return (*timers)[index]->getContextPointer();
}
| float TimerCore::remainingTimer | ( | unsigned int | index | ) |
Fires on expiration of a timer. Fires after a call to setTimer(). Subclasses should override this.
| index | Timer number that fired. Will be between 0 and the value given to initTimers() |
Definition at line 66 of file TimerCore.cc.
Referenced by Timer::remainingTimer().
{
checkExists(index);
if ((*timers)[index]->isScheduled())
return SIMTIME_DBL((*timers)[index]->getArrivalTime()-simTime());
else
return -1;
}
| void TimerCore::setContextDestructor | ( | unsigned int | index, | |
| cleanup * | c | |||
| ) |
Provide a destructor function for a "context pointer" such that we can do complete cleanup even if there are still timers remaining at the end of a simulation. Called on end of sim for still scheduled timers.
| index | Timer number |
Definition at line 75 of file TimerCore.cc.
Referenced by Timer::setContextDestructor().
{
checkExists(index);
(*destructors)[index] = c;
}
| void TimerCore::setContextPointer | ( | unsigned int | index, | |
| void * | data | |||
| ) |
Set a "context pointer" refering to some piece of opaque useful data
| index | Timer number | |
| data | Opaque pointer. Never free'd or dereferenced |
Definition at line 103 of file TimerCore.cc.
Referenced by Timer::setContextPointer().
{
checkExists(index);
(*timers)[index]->setContextPointer(data);
}
| void TimerCore::setTimer | ( | unsigned int | index, | |
| simtime_t | when | |||
| ) |
Set a timer to fire at a point in the future. If the timer with that id has already been set then this discards the old information.
| index | Timer number to set. | |
| when | Time in seconds in the future to fire the timer |
Definition at line 37 of file TimerCore.cc.
Referenced by setTimer(), and Timer::setTimer().
{
Enter_Method_Silent();
cMessage *timer;
if (timers->find(index)==timers->end())
{
timer = new cMessage("timer");
timer->setKind(index);
(*timers)[index] = timer;
(*destructors)[index] = NULL;
}
else
{
timer = (*timers)[index];
if (timer->isScheduled())
cancelEvent(timer);
}
scheduleAt(simTime() + when, timer);
}
| unsigned int TimerCore::setTimer | ( | simtime_t | when | ) |
Set a timer to fire at a point in the future. Auto-generates a timer id that's guaranteed not to have been used by anyone else. If the timer with that id has already been set then this discards the old information.
| when | Time in seconds in the future to fire the timer |
Definition at line 28 of file TimerCore.cc.
References setTimer().
{
unsigned int key = timers->size();
while (timers->find(key)!=timers->end())
key++;
setTimer(key,when);
return key;
}
1.7.1