]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/inspircd.h
Unload as many modules as we can on restart, and close listeners
[user/henk/code/inspircd.git] / include / inspircd.h
index 8cce5513a130a5b326766cc25cc4e2901db06be7..6cb5c0dd044b4972f45e0df54a6496f5a542ec3b 100644 (file)
@@ -2,14 +2,11 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- *                    E-mail:
- *             <brain@chatspike.net>
- *               <Craig@chatspike.net>
- *     
- * Written by Craig Edwards, Craig McLure, and others.
+ *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
+ *
  * This program is free but copyrighted software; see
- *         the file COPYING for details.
+ *            the file COPYING for details.
  *
  * ---------------------------------------------------
  */
@@ -74,6 +71,13 @@ template<typename T> inline std::string ConvToStr(const T &in)
        return tmp.str();
 }
 
+template<typename T> inline long ConvToInt(const T &in)
+{
+       std::stringstream tmp;
+       if (!(tmp << in)) return 0;
+       return atoi(tmp.str().c_str());
+}
+
 /** This class contains various STATS counters
  * It is used by the InspIRCd class, which internally
  * has an instance of it.
@@ -119,6 +123,14 @@ class serverstats : public classbase
         */
        unsigned long BoundPortCount;
 
+       /** Cpu usage at last sample
+        */
+       timeval LastCPU;
+
+       /** Time last sample was read
+        */
+       timeval LastSampled;
+
        /** The constructor initializes all the counts to zero
         */
        serverstats()
@@ -193,6 +205,9 @@ class FileLogger : public EventHandler
 /** A list of failed port bindings, used for informational purposes on startup */
 typedef std::vector<std::pair<std::string, long> > FailedPortList;
 
+/** A list of ip addresses cross referenced against clone counts */
+typedef std::map<irc::string, unsigned int> clonemap;
+
 class XLineManager;
 
 /** The main class of the irc server.
@@ -401,6 +416,10 @@ class InspIRCd : public classbase
         */
        std::vector<userrec*> all_opers;
 
+       clonemap local_clones;
+
+       clonemap global_clones;
+
        /** Whowas container, contains a map of vectors of users tracked by WHOWAS
         */
        irc::whowas::whowas_users whowas;
@@ -453,6 +472,10 @@ class InspIRCd : public classbase
         */
        int SetTimeDelta(int delta);
 
+       void AddLocalClone(userrec* user);
+
+       void AddGlobalClone(userrec* user);
+
        /** Get the time offset in seconds
         * @return The current time delta (in seconds)
         */
@@ -673,7 +696,7 @@ class InspIRCd : public classbase
        /** Send an error notice to all local users, opered and unopered
         * @param s The error string to send
         */
-       void SendError(const char *s);
+       void SendError(const std::string &s);
 
        /** For use with Module::Prioritize().
         * When the return value of this function is returned from
@@ -1090,6 +1113,14 @@ class InspIRCd : public classbase
 
        void SendWhoisLine(userrec* user, userrec* dest, int numeric, const char* format, ...);
 
+       /** Restart the server.
+        * This function will not return. If an error occurs,
+        * it will throw an instance of CoreException.
+        * @param reason The restart reason to show to all clients
+        * @throw CoreException An instance of CoreException indicating the error from execv().
+        */
+       void Restart(const std::string &reason);
+
        /** Begin execution of the server.
         * NOTE: this function NEVER returns. Internally,
         * after performing some initialisation routines,