///////////////////////////////////////////////////////////
///////////////// Have an itch? Scratch it! ///////////////
///////////////////////// SCRATCH /////////////////////////
///////////////////// A MUD Server ////////////////////
///////////////////// By: Jared Devall ////////////////////
///////////////////// Thanks: ////////////////////
///////////////////// DIKU/Merc/ROM ////////////////////
///////////////////// Aetas/Deus Gang ////////////////////
///////////////////// Beej ////////////////////
///////////////////////////////////////////////////////////
#ifndef __TIMER_H
#define __TIMER_H
#include <ctime>
// Thanks for the help Eiz
typedef unsigned long long int ustime_t;
class Timer {
public:
bool _enabled;
private:
int _interval;
int _times;
ustime_t _when;
public:
Timer( int interval, int times );
ustime_t GetTime( void );
virtual ~Timer() { }
// Resets the tick count to 0.
void Reset( void );
// Fires the timer. Returns true if we wish to fire
// again sometime in the future (the when() time will
// change), false if otherwise.
bool Fire( void );
// Returns the time to execute.
time_t When( void ) const;
// Execute the function associated with the timer, return
// the status of the timer.
virtual bool Execute( void ) = 0;
};
struct timer_less {
bool operator() ( const Timer *lhs, const Timer *rhs ) const {
return lhs->When() > rhs->When();
}
};
inline time_t Timer::When() const {
return _when;
}
#endif // __TIMER_H