]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/inspircd.h
First phase of conversion to dynamic limits on all the lengths, configured via the...
[user/henk/code/inspircd.git] / include / inspircd.h
index 9798af4f29bb7599450893815b1bb6c9ee05b840..9d7c8e6e1a129c93886c89fac2cdc941e8f53c5f 100644 (file)
@@ -56,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.
@@ -229,10 +230,13 @@ typedef std::vector<std::pair<std::string, long> > FailedPortList;
 class InspIRCd;
 
 DEFINE_HANDLER1(ProcessUserHandler, void, User*);
-DEFINE_HANDLER1(IsNickHandler, bool, const char*);
+DEFINE_HANDLER2(IsNickHandler, bool, const char*, size_t);
 DEFINE_HANDLER1(IsIdentHandler, bool, const char*);
 DEFINE_HANDLER1(FindDescriptorHandler, User*, int);
 DEFINE_HANDLER1(FloodQuitUserHandler, void, User*);
+DEFINE_HANDLER2(IsChannelHandler, bool, const char*, size_t);
+DEFINE_HANDLER1(IsSIDHandler, bool, const std::string&);
+DEFINE_HANDLER1(RehashHandler, void, const std::string&);
 
 /* Forward declaration - required */
 class XLineManager;
@@ -273,7 +277,7 @@ class CoreExport InspIRCd : public classbase
  private:
        /** Holds the current UID. Used to generate the next one.
         */
-       char current_uid[UUID_LENGTH + 1];
+       char current_uid[UUID_LENGTH];
 
        /** Set up the signal handlers
         */
@@ -289,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
         */
@@ -344,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.
@@ -463,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.
@@ -574,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);
+       caller2<bool, const char*, size_t> 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
@@ -622,7 +633,7 @@ class CoreExport InspIRCd : public classbase
         * @param n A nickname to verify
         * @return True if the nick is valid
         */
-       caller1<bool, const char*> IsNick;
+       caller2<bool, const char*, size_t> IsNick;
 
        /** Return true if an ident is valid
         * @param An ident to verify
@@ -668,7 +679,7 @@ class CoreExport InspIRCd : public classbase
         * @param pcnt The number of items you have given in the first parameter
         * @param user The user to send error messages to
         */
-       void SendMode(const char* const* parameters, int pcnt, User *user);
+       void SendMode(const std::vector<std::string>& parameters, User *user);
 
        /** Match two strings using pattern matching.
         * This operates identically to the global function match(),
@@ -686,7 +697,7 @@ class CoreExport InspIRCd : public classbase
         * @param user The user to execute the command as
         * @return True if the command handler was called successfully
         */
-       CmdResult CallCommandHandler(const std::string &commandname, const char* const* parameters, int pcnt, User* user);
+       CmdResult CallCommandHandler(const std::string &commandname, const std::vector<std::string>& parameters, User* user);
 
        /** Return true if the command is a module-implemented command and the given parameters are valid for it
         * @param parameters The mode parameters
@@ -756,7 +767,7 @@ class CoreExport InspIRCd : public classbase
         * @param hashtype The hash from the config file
         * @return 0 if the strings match, 1 or -1 if they do not
         */
-       int PassCompare(Extensible* ex, const char* data,const char* input, const char* hashtype);
+       int PassCompare(Extensible* ex, const std::string &data, const std::string &input, const std::string &hashtype);
 
        /** Check if a given server is a uline.
         * An empty string returns true, this is by design.
@@ -795,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, ...) CUSTOM_PRINTF(3, 4);
-
-       /** 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