All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Classes | Public Member Functions | Friends
GpCoreTools::Timer Class Reference

Brief description of class still missing. More...

#include <Timer.h>

Inheritance diagram for GpCoreTools::Timer:
BeaconTimer DeadPeersTimer GpCoreTools::ScreenClientConnect IpRouteWatch LinkMeasureTimer LinkTestTimer LinkTimer NavigationTimer TimeRequest

List of all members.

Classes

class  QueueItem

Public Member Functions

bool after (Timer *o) const
virtual bool exec ()=0
int interval () const
bool isRunning ()
void printDebug ()
void setInterval (int i)
void setTimeout ()
void start ()
void stop ()
int timeout () const
 Timer ()
virtual ~Timer ()

Friends

class EventLoop

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

Description of constructor still missing

References TRACE.

{
  TRACE;
  _interval=1000;
  _queued=0;
}

References stop(), and TRACE.

{
  TRACE;
  stop();
}

Member Function Documentation

bool GpCoreTools::Timer::after ( Timer o) const

References TRACE.

{
  TRACE;
  if(_timeout.tv_sec>o->_timeout.tv_sec) {
    return true;
  } else if(_timeout.tv_sec<o->_timeout.tv_sec) {
    return false;
  } else {
    if(_timeout.tv_nsec>o->_timeout.tv_nsec) {
      return true;
    } else {
      return false;
    }
  }
}
GpCoreTools::Timer::exec ( ) [pure virtual]

Performs action after timeout. If it returns true the timer is not single shot, i.e. deleted right after exec().

Implemented in GpCoreTools::ScreenClientConnect, NavigationTimer, IpRouteWatch, LinkMeasureTimer, LinkTestTimer, TimeRequest, BeaconTimer, DeadPeersTimer, and LinkTimer.

int GpCoreTools::Timer::interval ( ) const [inline]

Referenced by DeadPeersTimer::exec().

{return _interval;}
bool GpCoreTools::Timer::isRunning ( ) [inline]
{return _queued;}

References timeout(), and TRACE.

{
  TRACE;
  printf("Timer interval=%i, abs_timeout_sec=%li, abs_timeout_nsec=%li, rel_timeout=%i, running=%s\n",
         _interval, _timeout.tv_sec, _timeout.tv_nsec, timeout(), _queued ? "yes" : "no");
}
GpCoreTools::Timer::setInterval ( int  i) [inline]

References TRACE.

{
  TRACE;
  clock_gettime(CLOCK_REALTIME, &_timeout);
  int sec=_interval/1000;
  long nsec=(_interval-sec*1000)*1000000;
  _timeout.tv_nsec+=nsec;
  _timeout.tv_sec+=sec;
  if(_timeout.tv_nsec>1000000000) {
    _timeout.tv_sec++;
    _timeout.tv_nsec-=1000000000;
  }
}

References TRACE.

Referenced by start(), and ~Timer().

{
  TRACE;
  if(_queued) {
    _queued->detach();
    _queued=0;
  }
}

References TRACE.

Referenced by printDebug().

{
  TRACE;
  timespec t;
  clock_gettime(CLOCK_REALTIME, &t);
  int d=(_timeout.tv_sec-t.tv_sec)*1000+(_timeout.tv_nsec-t.tv_nsec)/1000000;
  return d<0 ? 0 : d;
}

Friends And Related Function Documentation

friend class EventLoop [friend]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines