Public Types | Public Member Functions | Protected Member Functions | Protected Attributes

TimerCore Class Reference

Inherits BaseModule.

Collaboration diagram for TimerCore:
Collaboration graph
[legend]

List of all members.

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

Timertimer
std::map< unsigned int,
cMessage * > * 
timers
std::map< unsigned int,
cleanup * > * 
destructors

Detailed Description

Definition at line 9 of file TimerCore.h.


Member Function Documentation

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.

Parameters:
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

Parameters:
index Timer number
Returns:
Opaque pointer from

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.

Parameters:
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.

Parameters:
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

Parameters:
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.

Parameters:
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.

Parameters:
when Time in seconds in the future to fire the timer
Returns:
Timer id

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;
}


The documentation for this class was generated from the following files: