summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2015-11-23 12:51:00 +0100
committerAttila Molnar <attilamolnar@hush.com>2015-11-23 12:51:00 +0100
commit6fc00fa62905e5990fa9667f540e10a775832540 (patch)
treefa037bc3e25569d720d596139f120529e7642109
parent42de16029da37f08ce1827352aa78b4b29d888cb (diff)
Implement ModeHandler::RegisterService()
-rw-r--r--include/mode.h5
-rw-r--r--src/mode.cpp6
-rw-r--r--src/modules.cpp7
3 files changed, 11 insertions, 7 deletions
diff --git a/include/mode.h b/include/mode.h
index eebfbedd6..d8884bf9f 100644
--- a/include/mode.h
+++ b/include/mode.h
@@ -168,6 +168,11 @@ class CoreExport ModeHandler : public ServiceProvider
ModeHandler(Module* me, const std::string& name, char modeletter, ParamSpec params, ModeType type, Class mclass = MC_OTHER);
virtual CullResult cull();
virtual ~ModeHandler();
+
+ /** Register this object in the ModeParser
+ */
+ void RegisterService() CXX11_OVERRIDE;
+
/**
* Returns true if the mode is a list mode
*/
diff --git a/src/mode.cpp b/src/mode.cpp
index 671b5d854..6038f6f5b 100644
--- a/src/mode.cpp
+++ b/src/mode.cpp
@@ -90,6 +90,12 @@ bool ModeHandler::ResolveModeConflict(std::string& theirs, const std::string& ou
return (theirs < ours);
}
+void ModeHandler::RegisterService()
+{
+ ServerInstance->Modes.AddMode(this);
+ ServerInstance->Modules.AddReferent((GetModeType() == MODETYPE_CHANNEL ? "mode/" : "umode/") + name, this);
+}
+
ModeAction SimpleUserModeHandler::OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding)
{
/* We're either trying to add a mode we already have or
diff --git a/src/modules.cpp b/src/modules.cpp
index d28657ca8..f5998f79c 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -556,13 +556,6 @@ void ModuleManager::AddService(ServiceProvider& item)
{
switch (item.service)
{
- case SERVICE_MODE:
- {
- ModeHandler* mh = static_cast<ModeHandler*>(&item);
- ServerInstance->Modes->AddMode(mh);
- AddReferent((mh->GetModeType() == MODETYPE_CHANNEL ? "mode/" : "umode/") + item.name, &item);
- return;
- }
case SERVICE_METADATA:
if (!ServerInstance->Extensions.Register(static_cast<ExtensionItem*>(&item)))
throw ModuleException("Extension " + std::string(item.name) + " already exists.");