/* +------------------------------------+ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. * E-mail: * * * * Written by Craig Edwards, Craig McLure, and others. * This program is free but copyrighted software; see * the file COPYING for details. * * --------------------------------------------------- */ using namespace std; #include "inspircd_config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include "timer.h" #include "inspircd.h" #include "inspircd_io.h" #include "inspstring.h" #include "helperfuncs.h" extern InspIRCd* ServerInstance; extern ServerConfig* Config; extern time_t TIME; typedef std::vector timergroup; typedef std::map timerlist; timerlist Timers; void TickTimers(time_t TIME) { timerlist::iterator found = Timers.find(TIME); if (found != Timers.end()) { log(DEBUG,"timer.cpp: There are timers to trigger"); timergroup* x = found->second; /* * There are pending timers to trigger */ for (timergroup::iterator y = x->begin(); y != x->end(); y++) { log(DEBUG,"timer.cpp: Triggering a timer"); InspTimer* n = (InspTimer*)*y; n->Tick(TIME); log(DEBUG,"timer.cpp: TICK!"); delete n; } log(DEBUG,"timer.cpp: Done triggering timers, tidying up"); Timers.erase(found); delete x; } } void AddTimer(InspTimer* T) { log(DEBUG,"timer.cpp: Adding timer"); timergroup* x = NULL; timerlist::iterator found = Timers.find(T->GetTimer()); if (found != Timers.end()) { log(DEBUG,"timer.cpp: Add timer to existing group"); x = found->second; } else { log(DEBUG,"timer.cpp: Add timer to new group"); x = new timergroup; Timers[T->GetTimer()] = x; } x->push_back(T); }