]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/modules.h
Send a snotice when m_filter kills or G-Lines a client.
[user/henk/code/inspircd.git] / include / modules.h
index 2481f8207de135317fb56e5cee2a2006478fffea..5dee6bfb63c8293df7f26ca3fbeb2305bd8b157b 100644 (file)
 #include "timer.h"
 #include "mode.h"
 
-/** Used to define a set of behavior bits for a module
- */
-enum ModuleFlags {
-       VF_NONE = 0,            // module is not special at all
-       VF_VENDOR = 2,          // module is a vendor module (came in the original tarball, not 3rd party)
-       VF_COMMON = 4,          // module needs to be common on all servers in a network to link
-       VF_OPTCOMMON = 8,       // module should be common on all servers for unsurprising behavior
-       VF_CORE = 16            // module is a core command, can be assumed loaded on all servers
+/** Used to specify the behaviour of a module. */
+enum ModuleFlags
+{
+       /** The module has no special attributes. */
+       VF_NONE = 0,
+
+       /** The module is a coremod and can be assumed to be loaded on all servers. */
+       VF_CORE = 1,
+
+       /* The module is included with InspIRCd. */
+       VF_VENDOR = 2,
+
+       /** The module MUST be loaded on all servers on a network to link. */
+       VF_COMMON = 4,
+
+       /** The module SHOULD be loaded on all servers on a network for consistency. */
+       VF_OPTCOMMON = 8
 };
 
 /** Used to represent an event type, for user, channel or server
@@ -221,8 +230,8 @@ enum Implementation
        I_OnUserConnect, I_OnUserQuit, I_OnUserDisconnect, I_OnUserJoin, I_OnUserPart,
        I_OnSendSnotice, I_OnUserPreJoin, I_OnUserPreKick, I_OnUserKick, I_OnOper, I_OnInfo,
        I_OnUserPreInvite, I_OnUserInvite, I_OnUserPreMessage, I_OnUserPreNick,
-       I_OnUserMessage, I_OnMode, I_OnSyncUser,
-       I_OnSyncChannel, I_OnDecodeMetaData, I_OnAcceptConnection, I_OnUserInit,
+       I_OnUserMessage, I_OnMode,
+       I_OnDecodeMetaData, I_OnAcceptConnection, I_OnUserInit,
        I_OnChangeHost, I_OnChangeName, I_OnAddLine, I_OnDelLine, I_OnExpireLine,
        I_OnUserPostNick, I_OnPreMode, I_On005Numeric, I_OnKill, I_OnLoadModule,
        I_OnUnloadModule, I_OnBackgroundTimer, I_OnPreCommand, I_OnCheckReady, I_OnCheckInvite,
@@ -230,10 +239,11 @@ enum Implementation
        I_OnStats, I_OnChangeLocalUserHost, I_OnPreTopicChange,
        I_OnPostTopicChange, I_OnPostConnect,
        I_OnChangeLocalUserGECOS, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete,
-       I_OnPostOper, I_OnSyncNetwork, I_OnSetAway, I_OnPostCommand, I_OnPostJoin,
+       I_OnPostOper, I_OnSetAway, I_OnPostCommand, I_OnPostJoin,
        I_OnBuildNeighborList, I_OnGarbageCollect, I_OnSetConnectClass,
        I_OnText, I_OnPassCompare, I_OnNamesListItem, I_OnNumeric,
        I_OnPreRehash, I_OnModuleRehash, I_OnSendWhoLine, I_OnChangeIdent, I_OnSetUserIP,
+       I_OnServiceAdd, I_OnServiceDel,
        I_END
 };
 
@@ -276,7 +286,7 @@ class CoreExport Module : public classbase, public usecountbase
        /** Clean up prior to destruction
         * If you override, you must call this AFTER your module's cleanup
         */
-       virtual CullResult cull() CXX11_OVERRIDE;
+       CullResult cull() CXX11_OVERRIDE;
 
        /** Default destructor.
         * destroys a module class
@@ -571,40 +581,11 @@ class CoreExport Module : public classbase, public usecountbase
         */
        virtual void OnMode(User* user, User* usertarget, Channel* chantarget, const Modes::ChangeList& changelist, ModeParser::ModeProcessFlag processflags, const std::string& output_mode);
 
-       /** Allows modules to synchronize data which relates to users during a netburst.
-        * When this function is called, it will be called from the module which implements
-        * the linking protocol. This currently is m_spanningtree.so.
-        * This function will be called for every user visible on your side
-        * of the burst, allowing you to for example set modes, etc.
-        * @param user The user being syncronized
-        * @param server The target of the burst
-        */
-       virtual void OnSyncUser(User* user, ProtocolServer& server);
-
-       /** Allows modules to synchronize data which relates to channels during a netburst.
-        * When this function is called, it will be called from the module which implements
-        * the linking protocol. This currently is m_spanningtree.so.
-        * This function will be called for every channel visible on your side of the burst,
-        * allowing you to for example set modes, etc.
-        *
-        * @param chan The channel being syncronized
-        * @param server The target of the burst
-        */
-       virtual void OnSyncChannel(Channel* chan, ProtocolServer& server);
-
-       /** Allows modules to syncronize metadata not related to users or channels, over the network during a netburst.
-        * When the linking module has finished sending all data it wanted to send during a netburst, then
-        * this method is called. You should use the SendMetaData() function after you've
-        * correctly decided how the data should be represented, to send the data.
-        * @param server The target of the burst
-        */
-       virtual void OnSyncNetwork(ProtocolServer& server);
-
        /** Allows module data, sent via ProtoSendMetaData, to be decoded again by a receiving module.
         * Please see src/modules/m_swhois.cpp for a working example of how to use this method call.
         * @param target The Channel* or User* that data should be added to
         * @param extname The extension name which is being sent
-        * @param extdata The extension data, encoded at the other end by an identical module through OnSyncChannelMetaData or OnSyncUserMetaData
+        * @param extdata The extension data, encoded at the other end by an identical module
         */
        virtual void OnDecodeMetaData(Extensible* target, const std::string &extname, const std::string &extdata);
 
@@ -997,6 +978,16 @@ class CoreExport Module : public classbase, public usecountbase
         * @param user The user whose IP is being set
         */
        virtual void OnSetUserIP(LocalUser* user);
+
+       /** Called whenever a ServiceProvider is registered.
+        * @param service ServiceProvider being registered.
+        */
+       virtual void OnServiceAdd(ServiceProvider& service);
+
+       /** Called whenever a ServiceProvider is unregistered.
+        * @param service ServiceProvider being unregistered.
+        */
+       virtual void OnServiceDel(ServiceProvider& service);
 };
 
 /** A list of modules