]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_safelist.cpp
Document TimerManager class
[user/henk/code/inspircd.git] / src / modules / m_safelist.cpp
index 16455fe11f8ce480dae82dc7a3667fed8eb5320a..89e72f6527d43adb126961c0218af7a9ff4ebc48 100644 (file)
@@ -20,10 +20,9 @@ using namespace std;
 #include "channels.h"
 #include "modules.h"
 #include "helperfuncs.h"
-#include "message.h"
 #include <vector>
-extern time_t TIME;
+#include "configreader.h"
+#include "inspircd.h"
 
 class ListData : public classbase
 {
@@ -50,13 +49,13 @@ class ListTimer : public InspTimer
 {
  private:
 
-       Server* Srv;
        char buffer[MAXBUF];
        chanrec *chan;
+       InspIRCd* ServerInstance;
 
  public:
 
-       ListTimer(long interval, Server* Me) : InspTimer(interval,TIME), Srv(Me)
+       ListTimer(InspIRCd* Instance, long interval) : InspTimer(interval,Instance->Time()), ServerInstance(Instance)
        {
        }
 
@@ -72,13 +71,14 @@ class ListTimer : public InspTimer
                                /*
                                 * What we do here:
                                 *  - Get where they are up to
-                                *  - If it's > GetChannelCount, erase them from the iterator, set go_again to true
+                                *  - If it's more than total number of channels, erase
+                                *    them from the iterator, set go_again to true
                                 *  - If not, spool more channels
                                 */
                                userrec* u = (userrec*)(*iter);
                                ListData* ld;
                                u->GetExt("safelist_cache", ld);
-                               if (ld->list_position > Srv->GetChannelCount())
+                               if ((size_t)ld->list_position > ServerInstance->chanlist.size())
                                {
                                        u->Shrink("safelist_cache");
                                        DELETE(ld);
@@ -87,27 +87,27 @@ class ListTimer : public InspTimer
                                        break;
                                }
 
-                               log(DEBUG, "m_safelist.so: resuming spool of list to client %s at channel %ld", u->nick, ld->list_position);
+                               ServerInstance->Log(DEBUG, "m_safelist.so: resuming spool of list to client %s at channel %ld", u->nick, ld->list_position);
                                chan = NULL;
                                /* Attempt to fill up to half the user's sendq with /LIST output */
                                long amount_sent = 0;
                                do
                                {
-                                       log(DEBUG,"Channel %ld",ld->list_position);
+                                       ServerInstance->Log(DEBUG,"Channel %ld",ld->list_position);
                                        if (!ld->list_position)
                                                u->WriteServ("321 %s Channel :Users Name",u->nick);
-                                       chan = Srv->GetChannelIndex(ld->list_position);
+                                       chan = ServerInstance->GetChannelIndex(ld->list_position);
                                        /* spool details */
                                        bool has_user = (chan && chan->HasUser(u));
                                        if ((chan) && (((!(chan->modes[CM_PRIVATE])) && (!(chan->modes[CM_SECRET]))) || (has_user)))
                                        {
-                                               long users = usercount(chan);
+                                               long users = chan->GetUserCounter();
                                                if (users)
                                                {
-                                                       int counter = snprintf(buffer,MAXBUF,"322 %s %s %ld :[+%s] %s",u->nick,chan->name,users,chanmodes(chan,has_user),chan->topic);
+                                                       int counter = snprintf(buffer,MAXBUF,"322 %s %s %ld :[+%s] %s",u->nick,chan->name,users,chan->ChanModes(has_user),chan->topic);
                                                        /* Increment total plus linefeed */
-                                                       amount_sent += counter + 4 + Srv->GetServerName().length();
-                                                       log(DEBUG,"m_safelist.so: Sent %ld of safe %ld / 4",amount_sent,u->sendqmax);
+                                                       amount_sent += counter + 4 + strlen(ServerInstance->Config->ServerName);
+                                                       ServerInstance->Log(DEBUG,"m_safelist.so: Sent %ld of safe %ld / 4",amount_sent,u->sendqmax);
                                                        u->WriteServ(std::string(buffer));
                                                }
                                        }
@@ -129,23 +129,21 @@ class ListTimer : public InspTimer
                        }
                }
 
-               ListTimer* MyTimer = new ListTimer(1,Srv);
-               Srv->AddTimer(MyTimer);
+               ListTimer* MyTimer = new ListTimer(ServerInstance,1);
+               ServerInstance->Timers->AddTimer(MyTimer);
        }
 };
 
 class ModuleSafeList : public Module
 {
  private:
-        Server *Srv;
+        
         ListTimer* MyTimer;
  public:
-       ModuleSafeList(Server* Me) : Module::Module(Me)
+       ModuleSafeList(InspIRCd* Me) : Module::Module(Me)
        {
-               Srv = Me;
-
-               MyTimer = new ListTimer(1,Srv);
-               Srv->AddTimer(MyTimer);
+               MyTimer = new ListTimer(ServerInstance,1);
+               ServerInstance->Timers->AddTimer(MyTimer);
        }
  
        virtual ~ModuleSafeList()
@@ -199,7 +197,7 @@ class ModuleSafeList : public Module
                user->GetExt("safelist_last", last_list_time);
                if (last_list_time)
                {
-                       if (TIME < (*last_list_time)+60)
+                       if (ServerInstance->Time() < (*last_list_time)+60)
                        {
                                user->WriteServ("NOTICE %s :*** Woah there, slow down a little, you can't /LIST so often!",user->nick);
                                return 1;
@@ -212,12 +210,12 @@ class ModuleSafeList : public Module
                /*
                 * start at channel 0! ;)
                 */
-               ld = new ListData(0,TIME);
+               ld = new ListData(0,ServerInstance->Time());
                user->Extend("safelist_cache", ld);
                listusers.push_back(user);
 
                time_t* llt = new time_t;
-               *llt = TIME;
+               *llt = ServerInstance->Time();
                user->Extend("safelist_last", llt);
        
                return 1;
@@ -281,7 +279,7 @@ class ModuleSafeListFactory : public ModuleFactory
        {
        }
  
-       virtual Module * CreateModule(Server* Me)
+       virtual Module * CreateModule(InspIRCd* Me)
        {
                return new ModuleSafeList(Me);
        }