]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/inspircd.h
Remove SpanningTreeProtocolInterface::SendOperNotice - it was translated to a SendSNO...
[user/henk/code/inspircd.git] / include / inspircd.h
index a933e5c41e59315db2455b01b9829dc885492e10..1b88ca0b72cce49b264cea77bfb483b4ace723f2 100644 (file)
 #undef ERROR
 #endif
 
+#ifdef __GNUC__
+#define CUSTOM_PRINTF(STRING, FIRST) __attribute__((format(printf, STRING, FIRST)))
+#else
+#define CUSTOM_PRINTF(STRING, FIRST)
+#endif
+
 // Required system headers.
 #include <time.h>
 #include <stdarg.h>
@@ -50,6 +56,7 @@
 #include "modules.h"
 #include "configreader.h"
 #include "inspstring.h"
+#include "protocol.h"
 
 /**
  * Used to define the maximum number of parameters a command may have.
@@ -227,16 +234,21 @@ DEFINE_HANDLER1(IsNickHandler, bool, const char*);
 DEFINE_HANDLER1(IsIdentHandler, bool, const char*);
 DEFINE_HANDLER1(FindDescriptorHandler, User*, int);
 DEFINE_HANDLER1(FloodQuitUserHandler, void, User*);
+DEFINE_HANDLER1(IsChannelHandler, bool, const char*);
+DEFINE_HANDLER1(IsSIDHandler, bool, const std::string&);
+DEFINE_HANDLER1(RehashHandler, void, const std::string&);
 
 /* Forward declaration - required */
 class XLineManager;
 class BanCacheManager;
 
-class ConfigReaderThread : public Thread
+class CoreExport ConfigReaderThread : public Thread
 {
        InspIRCd* ServerInstance;
+       bool do_bail;
+       User* TheUser;
  public:
-       ConfigReaderThread(InspIRCd* Instance) : Thread(), ServerInstance(Instance)
+       ConfigReaderThread(InspIRCd* Instance, bool bail, User* user) : Thread(), ServerInstance(Instance), do_bail(bail), TheUser(user)
        {
        }
 
@@ -281,9 +293,9 @@ class CoreExport InspIRCd : public classbase
         */
        void DoSocketTimeouts(time_t TIME);
 
-       /** Sets up UID subsystem
+       /** Increments the current UID by one.
         */
-       void InitialiseUID();
+       void IncrementUID(int pos);
 
        /** Perform background user events such as PING checks
         */
@@ -336,6 +348,9 @@ class CoreExport InspIRCd : public classbase
        IsIdentHandler HandleIsIdent;
        FindDescriptorHandler HandleFindDescriptor;
        FloodQuitUserHandler HandleFloodQuitUser;
+       IsChannelHandler HandleIsChannel;
+       IsSIDHandler HandleIsSID;
+       RehashHandler HandleRehash;
 
        /** BufferedSocket classes pending deletion after being closed.
         * We don't delete these immediately as this may cause a segmentation fault.
@@ -455,6 +470,10 @@ class CoreExport InspIRCd : public classbase
         */
        int s_signal;
 
+       /** Protocol interface, overridden by server protocol modules
+        */
+       ProtocolInterface* PI;
+
        /** Get the current time
         * Because this only calls time() once every time around the mainloop,
         * it is much faster than calling time() directly.
@@ -566,16 +585,16 @@ class CoreExport InspIRCd : public classbase
         * @param chname A channel name to verify
         * @return True if the name is valid
         */
-       bool IsChannel(const char *chname);
+       caller1<bool, const char*> IsChannel;
 
        /** Return true if str looks like a server ID
         * @param string to check against
         */
-       bool IsSID(const std::string &str);
+       caller1<bool, const std::string&> IsSID;
 
        /** Rehash the local server
         */
-       void Rehash();
+       caller1<void, const std::string&> Rehash;
 
        /** Handles incoming signals after being set
         * @param signal the signal recieved
@@ -787,23 +806,6 @@ class CoreExport InspIRCd : public classbase
         */
        InspIRCd(int argc, char** argv);
 
-       /** Output a log message to the ircd.log file
-        * The text will only be output if the current loglevel
-        * is less than or equal to the level you provide
-        * @param level A log level from the DebugLevel enum
-        * @param text Format string of to write to the log
-        * @param ... Format arguments of text to write to the log
-        */
-       void Log(int level, const char* text, ...);
-
-       /** Output a log message to the ircd.log file
-        * The text will only be output if the current loglevel
-        * is less than or equal to the level you provide
-        * @param level A log level from the DebugLevel enum
-        * @param text Text to write to the log
-        */
-       void Log(int level, const std::string &text);
-
        /** Send a line of WHOIS data to a user.
         * @param user user to send the line to
         * @param dest user being WHOISed
@@ -819,7 +821,7 @@ class CoreExport InspIRCd : public classbase
         * @param format Format string for the numeric
         * @param ... Parameters for the format string
         */
-       void SendWhoisLine(User* user, User* dest, int numeric, const char* format, ...);
+       void SendWhoisLine(User* user, User* dest, int numeric, const char* format, ...) CUSTOM_PRINTF(5, 6);
 
        /** Quit a user for excess flood, and if they are not
         * fully registered yet, temporarily zline their IP.