#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
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
};
/** 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
*/
virtual void OnExpireLine(XLine *line);
- /** Called before your module is unloaded to clean up Extensibles.
- * This method is called once for every user and channel on the network,
- * so that when your module unloads it may clear up any remaining data
- * in the form of Extensibles added using Extensible::Extend().
- * If the target_type variable is TYPE_USER, then void* item refers to
- * a User*, otherwise it refers to a Channel*.
- * @param target_type The type of item being cleaned
- * @param item A pointer to the item's class
+ /** Called before the module is unloaded to clean up extensibles.
+ * This method is called once for every channel, membership, and user.
+ * so that you can clear up any data relating to the specified extensible.
+ * @param type The type of extensible being cleaned up. If this is EXT_CHANNEL
+ * then item is a Channel*, EXT_MEMBERSHIP then item is a Membership*,
+ * and EXT_USER then item is a User*.
+ * @param item A pointer to the extensible which is being cleaned up.
*/
- virtual void OnCleanup(int target_type, void* item);
+ virtual void OnCleanup(ExtensionItem::ExtensibleType type, Extensible* item);
/** Called after any nickchange, local or remote. This can be used to track users after nickchanges
* have been applied. Please note that although you can see remote nickchanges through this function, you should
* @param user The user that this line of the query is about
* @param memb The member shown in this line, NULL if no channel is in this line
* @param numeric Numeric to send; modifiable.
- * @param Return MOD_RES_PASSTHRU to allow the line to be displayed, MOD_RES_DENY to hide it
+ * @return MOD_RES_PASSTHRU to allow the line to be displayed, MOD_RES_DENY to hide it
*/
virtual ModResult OnSendWhoLine(User* source, const std::vector<std::string>& params, User* user, Membership* memb, Numeric::Numeric& numeric);
* @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
PRIO_STATE_LAST
} prioritizationState;
- /** Loads all core modules (cmd_*)
+ /** Loads all core modules (core_*)
*/
void LoadCoreModules(std::map<std::string, ServiceList>& servicemap);