1
0
mirror of https://github.com/anope/anope.git synced 2026-07-09 16:23:12 +02:00

Move assign and unassign to new events, allow for halting too should modules desire that.

git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2107 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
rburchell
2009-02-18 22:59:16 +00:00
parent 3fe5aa037a
commit 187c45059a
5 changed files with 42 additions and 14 deletions
+1 -3
View File
@@ -13,19 +13,17 @@
*/
#define EVENT_START "start"
#define EVENT_STOP "stop"
//#define EVENT_STOP "stop"
#define EVENT_DB_SAVING "db_saving"
#define EVENT_DB_BACKUP "db_backup"
#define EVENT_NEWNICK "newnick"
#define EVENT_BOT_UNASSIGN "bot_unassign"
#define EVENT_BOT_JOIN "bot_join"
#define EVENT_BOT_CREATE "bot_create"
#define EVENT_BOT_CHANGE "bot_change"
#define EVENT_BOT_FANTASY "bot_command"
#define EVENT_BOT_FANTASY_NO_ACCESS "bot_command_no_access"
#define EVENT_BOT_DEL "bot_del"
#define EVENT_BOT_ASSIGN "bot_assign"
#define EVENT_BOT_KICK "bot_kick"
#define EVENT_BOT_BAN "bot_ban"
#define EVENT_TOPIC_UPDATED "chan_topic_updated"
+28 -5
View File
@@ -40,6 +40,15 @@
#define MODULE_EXT ".so"
#endif
/** Possible return types from events.
*/
enum EventReturn
{
EVENT_STOP,
EVENT_CONTINUE,
EVENT_ALLOW
};
/**
* This #define allows us to call a method in all
@@ -72,15 +81,15 @@
#define FOREACH_RESULT(y,x) \
do { \
std::vector<Module*>::iterator safei; \
MOD_RESULT = 0; \
MOD_RESULT = EVENT_CONTINUE; \
for (std::vector<Module*>::iterator _i = ModuleManager::EventHandlers[y].begin(); _i != ModuleManager::EventHandlers[y].end(); ) \
{ \
safei = _i; \
++safei; \
try \
{ \
int res = (*_i)->x ; \
if (res != 0) { \
EventReturn res = (*_i)->x ; \
if (res != EVENT_CONTINUE) { \
MOD_RESULT = res; \
break; \
} \
@@ -104,7 +113,7 @@ enum Priority { PRIORITY_FIRST, PRIORITY_DONTCARE, PRIORITY_LAST, PRIORITY_BEFOR
enum Implementation
{
I_BEGIN,
I_OnUserKicked, I_OnReload,
I_OnUserKicked, I_OnReload, I_OnBotAssign, I_OnBotUnAssign,
I_END
};
@@ -495,8 +504,22 @@ class CoreExport Module
* @param startup True if Services is starting for the first time, false otherwise.
*/
virtual void OnReload(bool startup) {}
};
/** Called before a bot is assigned to a channel.
* @param sender The user assigning the bot
* @param ci The channel the bot is to be assigned to.
* @param bi The bot being assigned.
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to deny the assign.
*/
virtual EventReturn OnBotAssign(User *sender, ChannelInfo *ci, BotInfo *bi) { return EVENT_CONTINUE; }
/** Called before a bot is unassigned from a channel.
* @param sender The user unassigning the bot
* @param ci The channel the bot is being removed from
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to deny the unassign.
*/
virtual EventReturn OnBotUnAssign(User *sender, ChannelInfo *ci) { return EVENT_CONTINUE; }
};