]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/modules.h
Add proper support for "munging" of ipv6 addresses when ::ffff:addr is used (this...
[user/henk/code/inspircd.git] / include / modules.h
index 18a4a6dbb20b220995d088fe69c7c3c8c93a97ff..25fb52077938fa6c0f5714464901e285bc32d008 100644 (file)
@@ -193,6 +193,11 @@ class Request : public ModuleMessage
        /** This member holds a pointer to arbitary data set by the emitter of the message
         */
        char* data;
+       /** This should be a null-terminated string identifying the type of request,
+        * all modules should define this and use it to determine the nature of the
+        * request before they attempt to cast the Request in any way.
+        */
+       const char* id;
        /** This is a pointer to the sender of the message, which can be used to
         * directly trigger events, or to create a reply.
         */
@@ -202,11 +207,28 @@ class Request : public ModuleMessage
        Module* dest;
  public:
        /** Create a new Request
+        * This is for the 'old' way of casting whatever the data is
+        * to char* and hoping you get the right thing at the other end.
+        * This is slowly being depreciated in favor of the 'new' way.
         */
        Request(char* anydata, Module* src, Module* dst);
+       /** Create a new Request
+        * This is for the 'new' way of defining a subclass
+        * of Request and defining it in a common header,
+        * passing an object of your Request subclass through
+        * as a Request* and using the ID string to determine
+        * what to cast it back to and the other end. This is
+        * much safer as there are no casts not confirmed by
+        * the ID string, and all casts are child->parent and
+        * can be checked at runtime with dynamic_cast<>()
+        */
+       Request(Module* src, Module* dst, const char* idstr);
        /** Fetch the Request data
         */
        char* GetData();
+       /** Fetch the ID string
+        */
+       const char* GetId();
        /** Fetch the request source
         */
        Module* GetSource();
@@ -1049,10 +1071,11 @@ class Module : public Extensible
        /** Called on all /STATS commands
         * This method is triggered for all /STATS use, including stats symbols handled by the core.
         * @param symbol the symbol provided to /STATS
-        * @user the user issuing the /STATS command
+        * @param user the user issuing the /STATS command
+        * @param results A string_list to append results into
         * @return 1 to block the /STATS from being processed by the core, 0 to allow it
         */
-       virtual int OnStats(char symbol, userrec* user);
+       virtual int OnStats(char symbol, userrec* user, string_list &results);
 
        /** Called whenever a change of a local users displayed host is attempted.
         * Return 1 to deny the host change, or 0 to allow it.