*/
-/* $Core */
-
#include "inspircd.h"
-#include "timer.h"
void Timer::SetInterval(time_t newinterval)
{
- ServerInstance->Timers->DelTimer(this);
+ ServerInstance->Timers.DelTimer(this);
secs = newinterval;
SetTrigger(ServerInstance->Time() + newinterval);
- ServerInstance->Timers->AddTimer(this);
+ ServerInstance->Timers.AddTimer(this);
+}
+
+Timer::Timer(unsigned int secs_from_now, bool repeating)
+ : trigger(ServerInstance->Time() + secs_from_now)
+ , secs(secs_from_now)
+ , repeat(repeating)
+{
}
Timer::~Timer()
{
- ServerInstance->Timers->DelTimer(this);
+ ServerInstance->Timers.DelTimer(this);
}
void TimerManager::TickTimers(time_t TIME)
Timers.erase(i++);
if (!t->Tick(TIME))
- delete t;
- else if (t->GetRepeat())
+ continue;
+
+ if (t->GetRepeat())
{
t->SetTrigger(TIME + t->GetInterval());
AddTimer(t);