Data Structures | Defines | Enumerations

modules.h File Reference

#include "serialize.h"
#include "base.h"
#include "modes.h"
#include "timers.h"
#include "logger.h"
#include "extensible.h"
Include dependency graph for modules.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  ModuleVersion
class  Module
class  ModuleManager
class  CallBack

Defines

#define MODULE_INIT(x)
#define FOREACH_MOD(y, x)
#define FOREACH_RESULT(y, x)

Enumerations

enum  EventReturn { EVENT_STOP, EVENT_CONTINUE, EVENT_ALLOW }
enum  ModuleReturn {
  MOD_ERR_OK, MOD_ERR_MEMORY, MOD_ERR_PARAMS, MOD_ERR_EXISTS,
  MOD_ERR_NOEXIST, MOD_ERR_NOLOAD, MOD_ERR_UNKNOWN, MOD_ERR_FILE_IO,
  MOD_ERR_EXCEPTION, MOD_ERR_VERSION
}
enum  Priority {
  PRIORITY_FIRST, PRIORITY_DONTCARE, PRIORITY_LAST, PRIORITY_BEFORE,
  PRIORITY_AFTER
}
enum  ModType {
  MT_BEGIN, THIRD, SUPPORTED, CORE,
  DATABASE, ENCRYPTION, PROTOCOL, MT_END
}
enum  Implementation {
  I_BEGIN, I_OnPreNickExpire, I_OnNickExpire, I_OnNickForbidden,
  I_OnNickGroup, I_OnNickLogout, I_OnNickIdentify, I_OnNickDrop,
  I_OnNickRegister, I_OnNickSuspended, I_OnNickUnsuspended, I_OnDelNick,
  I_OnDelCore, I_OnChangeCoreDisplay, I_OnNickClearAccess, I_OnNickAddAccess,
  I_OnNickEraseAccess, I_OnNickClearCert, I_OnNickAddCert, I_OnNickEraseCert,
  I_OnNickInfo, I_OnCheckAuthentication, I_OnNickUpdate, I_OnSetNickOption,
  I_OnChanSuspend, I_OnChanDrop, I_OnPreChanExpire, I_OnChanExpire,
  I_OnAccessAdd, I_OnAccessDel, I_OnAccessClear, I_OnLevelChange,
  I_OnChanRegistered, I_OnChanUnsuspend, I_OnCreateChan, I_OnDelChan,
  I_OnChannelCreate, I_OnChannelDelete, I_OnAkickAdd, I_OnAkickDel,
  I_OnCheckKick, I_OnCheckModes, I_OnChanInfo, I_OnCheckPriv,
  I_OnGroupCheckPriv, I_OnSetChannelOption, I_OnBotJoin, I_OnBotKick,
  I_OnBotCreate, I_OnBotChange, I_OnBotDelete, I_OnBotAssign,
  I_OnBotUnAssign, I_OnUserKicked, I_OnBotFantasy, I_OnBotNoFantasyAccess,
  I_OnBotBan, I_OnBadWordAdd, I_OnBadWordDel, I_OnSetVhost,
  I_OnDeleteVhost, I_OnMemoSend, I_OnMemoDel, I_OnUserConnect,
  I_OnUserNickChange, I_OnUserQuit, I_OnPreUserLogoff, I_OnPostUserLogoff,
  I_OnPreJoinChannel, I_OnJoinChannel, I_OnPrePartChannel, I_OnPartChannel,
  I_OnLeaveChannel, I_OnFingerprint, I_OnUserAway, I_OnDefconLevel,
  I_OnAddAkill, I_OnDelAkill, I_OnExceptionAdd, I_OnExceptionDel,
  I_OnAddXLine, I_OnDelXLine, I_IsServicesOper, I_OnSaveDatabase,
  I_OnLoadDatabase, I_OnModuleLoad, I_OnModuleUnload, I_OnReload,
  I_OnNewServer, I_OnPreServerConnect, I_OnServerConnect, I_OnPreUplinkSync,
  I_OnServerDisconnect, I_OnPreHelp, I_OnPostHelp, I_OnPreCommand,
  I_OnPostCommand, I_OnRestart, I_OnShutdown, I_OnServerQuit,
  I_OnTopicUpdated, I_OnEncrypt, I_OnDecrypt, I_OnChannelModeSet,
  I_OnChannelModeUnset, I_OnUserModeSet, I_OnUserModeUnset, I_OnChannelModeAdd,
  I_OnUserModeAdd, I_OnMLock, I_OnUnMLock, I_OnServerSync,
  I_OnUplinkSync, I_OnBotPrivmsg, I_OnPrivmsg, I_OnLog,
  I_OnDnsRequest, I_OnMessage, I_OnSerializeCheck, I_OnSerializableConstruct,
  I_OnSerializableDestruct, I_OnSerializableUpdate, I_OnSerializeTypeCreate, I_END
}

Define Documentation

#define FOREACH_MOD (   y,
  x 
)
Value:
if (true) \
{ \
        std::vector<Module *>::iterator safei; \
        for (std::vector<Module *>::iterator _i = ModuleManager::EventHandlers[y].begin(); _i != ModuleManager::EventHandlers[y].end(); ) \
        { \
                safei = _i; \
                ++safei; \
                try \
                { \
                        (*_i)->x ; \
                } \
                catch (const ModuleException &modexcept) \
                { \
                        Log() << "Exception caught: " << modexcept.GetReason(); \
                } \
                _i = safei; \
        } \
} \
else \
        static_cast<void>(0)

This define allows us to call a method in all loaded modules in a readable simple way, e.g.: 'FOREACH_MOD(I_OnConnect,OnConnect(user));'

Definition at line 61 of file modules.h.

Referenced by NickCore::AddAccess(), ChannelInfo::AddBadWord(), NickCore::AddCert(), ModeManager::AddChannelMode(), ModeManager::AddUserMode(), User::ChangeNick(), Channel::ChangeTopic(), Channel::ChangeTopicInternal(), Channel::Channel(), ChannelInfo::ChannelInfo(), BSKick::check_ban(), NickCore::ClearAccess(), NickCore::ClearCert(), Uplink::Connect(), Server::Delete(), Channel::DeleteUser(), XOPBase::DoAdd(), CommandCSAKick::DoAdd(), CommandCSAccess::DoAdd(), CommandBSBot::DoAdd(), CommandBSBot::DoChange(), MyXMLRPCEvent::DoCheckAuthentication(), CommandOSAKill::DoClear(), XOPBase::DoClear(), CommandCSFlags::DoClear(), CommandCSAccess::DoClear(), ExceptionDelCallback::DoDel(), CommandOSAKill::DoDel(), XOPBase::DoDel(), CommandCSAKick::DoDel(), CommandCSAccess::DoDel(), CommandBSBot::DoDel(), CommandCSLevels::DoDisable(), CommandCSFlags::DoModify(), CommandCSLevels::DoReset(), CommandCSLevels::DoSet(), NickCore::EraseAccess(), ChannelInfo::EraseBadWord(), NickCore::EraseCert(), CommandOSReload::Execute(), CommandOSDefcon::Execute(), CommandNSUpdate::Execute(), CommandNSUnSuspend::Execute(), CommandNSSuspend::Execute(), CommandNSRegister::Execute(), CommandNSRecover::Execute(), CommandNSLogout::Execute(), CommandNSInfo::Execute(), CommandNSIdentify::Execute(), CommandNSGroup::Execute(), CommandNSDrop::Execute(), CommandMSDel::Execute(), CommandMSCancel::Execute(), CommandHSSetAll::Execute(), CommandHSSet::Execute(), CommandHSActivate::Execute(), CommandHSDelAll::Execute(), CommandHSDel::Execute(), CommandHelp::Execute(), CommandCSUnSuspend::Execute(), CommandCSSuspend::Execute(), CommandCSRegister::Execute(), CommandCSInfo::Execute(), CommandCSDrop::Execute(), CommandCSClone::Execute(), MemoDelCallback::HandleNumber(), MyManager::HandlePacket(), Anope::HandleSignal(), User::Identify(), BotInfo::Join(), Channel::KickInternal(), ModuleManager::LoadModule(), main(), CommandOSSXLineBase::OnClear(), UplinkSocket::OnConnect(), CommandOSSXLineBase::OnDel(), NickServCore::OnDelCore(), BotServCore::OnPrivmsg(), WebCPanel::Index::OnRequest(), NSGroupRequest::OnSuccess(), Serializable::QueueUpdate(), User::RemoveModeInternal(), Message::SQuit::Run(), Message::Quit::Run(), Message::Privmsg::Run(), Message::Part::Run(), Message::Join::Run(), Message::Away::Run(), IRCDMessageSASL::Run(), IRCDMessageEncap::Run(), IRCDMessageMetadata::Run(), RunCommand(), MyMemoServService::Send(), Serializable::Serializable(), Server::Server(), NickCore::SetDisplay(), User::SetModeInternal(), Message::Join::SJoin(), Server::Sync(), ExpireCallback::Tick(), DefConTimeout::Tick(), ModuleManager::UnloadModule(), User::User(), Channel::~Channel(), ChannelInfo::~ChannelInfo(), Log::~Log(), NickAlias::~NickAlias(), NickCore::~NickCore(), Serializable::~Serializable(), UplinkSocket::~UplinkSocket(), and User::~User().

#define FOREACH_RESULT (   y,
  x 
)
Value:
if (true) \
{ \
        std::vector<Module *>::iterator safei; \
        MOD_RESULT = EVENT_CONTINUE; \
        for (std::vector<Module *>::iterator _i = ModuleManager::EventHandlers[y].begin(); _i != ModuleManager::EventHandlers[y].end(); ) \
        { \
                safei = _i; \
                ++safei; \
                try \
                { \
                        EventReturn res = (*_i)->x ; \
                        if (res != EVENT_CONTINUE) { \
                                MOD_RESULT = res; \
                                break; \
                        } \
                } \
                catch (const ModuleException &modexcept) \
                { \
                        Log() << "Exception caught: " << modexcept.GetReason(); \
                } \
                _i = safei; \
        } \
} \
else \
        static_cast<void>(0)

This define is similar to the one above but returns a result in MOD_RESULT. The first module to return a nonzero result is the value to be accepted, and any modules after are ignored.

Definition at line 88 of file modules.h.

Referenced by BotInfo::Assign(), ChannelInfo::CheckKick(), Channel::CheckModes(), Anope::Decrypt(), CommandOSException::DoAdd(), CommandOSAKill::DoAdd(), Anope::Encrypt(), CommandHelp::Execute(), CommandCSSetMisc::Execute(), CommandCSSetSuccessor::Execute(), CommandCSSetSignKick::Execute(), CommandCSSetSecureOps::Execute(), CommandCSSetSecureFounder::Execute(), CommandCSSetSecure::Execute(), CommandCSSetRestricted::Execute(), CommandCSSetPrivate::Execute(), CommandCSSetPersist::Execute(), CommandCSSetPeace::Execute(), CommandCSSetKeepTopic::Execute(), CommandCSSetFounder::Execute(), CommandCSSetDescription::Execute(), CommandCSSetChanstats::Execute(), CommandCSSetBanType::Execute(), CommandCSSetAutoOp::Execute(), AccessGroup::HasPriv(), Anope::Init(), User::IsServicesOper(), Channel::Kick(), CommandOSSQLine::OnAdd(), CommandOSSNLine::OnAdd(), BotServCore::OnPrivmsg(), Anope::Process(), ChannelInfo::RemoveMLock(), Channel::RemoveModeInternal(), Message::Privmsg::Run(), CommandNSSetMisc::Run(), CommandNSSetSecure::Run(), CommandNSSetPrivate::Run(), CommandNSSetMessage::Run(), CommandNSSetLanguage::Run(), CommandNSSetKill::Run(), CommandNSSetHide::Run(), CommandNSSetGreet::Run(), CommandNSSetEmail::Run(), CommandNSSetDisplay::Run(), CommandNSSetChanstats::Run(), CommandNSSetAutoOp::Run(), RunCommand(), Anope::SaveDatabases(), ChannelInfo::SetMLock(), Channel::SetModeInternal(), Message::Join::SJoin(), and BotInfo::UnAssign().

#define MODULE_INIT (   x  ) 
Value:
extern "C" DllExport Module *AnopeInit(const Anope::string &modname, const Anope::string &creator) \
        { \
                return new x(modname, creator); \
        } \
        extern "C" DllExport void AnopeFini(x *m) \
        { \
                delete m; \
        }

This definition is used as shorthand for the various classes and functions needed to make a module loadable by the OS. It defines the class factory and external AnopeInit and AnopeFini functions.

Definition at line 45 of file modules.h.


Enumeration Type Documentation

Possible return types from events.

Enumerator:
EVENT_STOP 
EVENT_CONTINUE 
EVENT_ALLOW 

Definition at line 117 of file modules.h.

Implementation-specific flags which may be set in ModuleManager::Attach()

Enumerator:
I_BEGIN 
I_OnPreNickExpire 
I_OnNickExpire 
I_OnNickForbidden 
I_OnNickGroup 
I_OnNickLogout 
I_OnNickIdentify 
I_OnNickDrop 
I_OnNickRegister 
I_OnNickSuspended 
I_OnNickUnsuspended 
I_OnDelNick 
I_OnDelCore 
I_OnChangeCoreDisplay 
I_OnNickClearAccess 
I_OnNickAddAccess 
I_OnNickEraseAccess 
I_OnNickClearCert 
I_OnNickAddCert 
I_OnNickEraseCert 
I_OnNickInfo 
I_OnCheckAuthentication 
I_OnNickUpdate 
I_OnSetNickOption 
I_OnChanSuspend 
I_OnChanDrop 
I_OnPreChanExpire 
I_OnChanExpire 
I_OnAccessAdd 
I_OnAccessDel 
I_OnAccessClear 
I_OnLevelChange 
I_OnChanRegistered 
I_OnChanUnsuspend 
I_OnCreateChan 
I_OnDelChan 
I_OnChannelCreate 
I_OnChannelDelete 
I_OnAkickAdd 
I_OnAkickDel 
I_OnCheckKick 
I_OnCheckModes 
I_OnChanInfo 
I_OnCheckPriv 
I_OnGroupCheckPriv 
I_OnSetChannelOption 
I_OnBotJoin 
I_OnBotKick 
I_OnBotCreate 
I_OnBotChange 
I_OnBotDelete 
I_OnBotAssign 
I_OnBotUnAssign 
I_OnUserKicked 
I_OnBotFantasy 
I_OnBotNoFantasyAccess 
I_OnBotBan 
I_OnBadWordAdd 
I_OnBadWordDel 
I_OnSetVhost 
I_OnDeleteVhost 
I_OnMemoSend 
I_OnMemoDel 
I_OnUserConnect 
I_OnUserNickChange 
I_OnUserQuit 
I_OnPreUserLogoff 
I_OnPostUserLogoff 
I_OnPreJoinChannel 
I_OnJoinChannel 
I_OnPrePartChannel 
I_OnPartChannel 
I_OnLeaveChannel 
I_OnFingerprint 
I_OnUserAway 
I_OnDefconLevel 
I_OnAddAkill 
I_OnDelAkill 
I_OnExceptionAdd 
I_OnExceptionDel 
I_OnAddXLine 
I_OnDelXLine 
I_IsServicesOper 
I_OnSaveDatabase 
I_OnLoadDatabase 
I_OnModuleLoad 
I_OnModuleUnload 
I_OnReload 
I_OnNewServer 
I_OnPreServerConnect 
I_OnServerConnect 
I_OnPreUplinkSync 
I_OnServerDisconnect 
I_OnPreHelp 
I_OnPostHelp 
I_OnPreCommand 
I_OnPostCommand 
I_OnRestart 
I_OnShutdown 
I_OnServerQuit 
I_OnTopicUpdated 
I_OnEncrypt 
I_OnDecrypt 
I_OnChannelModeSet 
I_OnChannelModeUnset 
I_OnUserModeSet 
I_OnUserModeUnset 
I_OnChannelModeAdd 
I_OnUserModeAdd 
I_OnMLock 
I_OnUnMLock 
I_OnServerSync 
I_OnUplinkSync 
I_OnBotPrivmsg 
I_OnPrivmsg 
I_OnLog 
I_OnDnsRequest 
I_OnMessage 
I_OnSerializeCheck 
I_OnSerializableConstruct 
I_OnSerializableDestruct 
I_OnSerializableUpdate 
I_OnSerializeTypeCreate 
I_END 

Definition at line 973 of file modules.h.

enum ModType
Enumerator:
MT_BEGIN 
THIRD 
SUPPORTED 
CORE 
DATABASE 
ENCRYPTION 
PROTOCOL 
MT_END 

Definition at line 142 of file modules.h.

Enumerator:
MOD_ERR_OK 
MOD_ERR_MEMORY 
MOD_ERR_PARAMS 
MOD_ERR_EXISTS 
MOD_ERR_NOEXIST 
MOD_ERR_NOLOAD 
MOD_ERR_UNKNOWN 
MOD_ERR_FILE_IO 
MOD_ERR_EXCEPTION 
MOD_ERR_VERSION 

Definition at line 124 of file modules.h.

enum Priority

Priority types which can be returned from Module::Prioritize()

Enumerator:
PRIORITY_FIRST 
PRIORITY_DONTCARE 
PRIORITY_LAST 
PRIORITY_BEFORE 
PRIORITY_AFTER 

Definition at line 140 of file modules.h.