summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2015-11-23 12:50:35 +0100
committerAttila Molnar <attilamolnar@hush.com>2015-11-23 12:50:35 +0100
commit42de16029da37f08ce1827352aa78b4b29d888cb (patch)
treeb8f61d0a518df5d480285d4d6c16250921cdf42e
parent820f229a9efe2678d1e85578aa086a1efdd73a30 (diff)
Implement Command::RegisterService()
-rw-r--r--include/ctables.h4
-rw-r--r--src/command_parse.cpp6
-rw-r--r--src/modules.cpp4
3 files changed, 10 insertions, 4 deletions
diff --git a/include/ctables.h b/include/ctables.h
index abf65f561..bc4226ea9 100644
--- a/include/ctables.h
+++ b/include/ctables.h
@@ -218,6 +218,10 @@ class CoreExport Command : public CommandBase
*/
virtual CmdResult Handle(const std::vector<std::string>& parameters, User* user) = 0;
+ /** Register this object in the CommandParser
+ */
+ void RegisterService() CXX11_OVERRIDE;
+
/** Destructor
* Removes this command from the command parser
*/
diff --git a/src/command_parse.cpp b/src/command_parse.cpp
index 7998d9cc3..c123353b0 100644
--- a/src/command_parse.cpp
+++ b/src/command_parse.cpp
@@ -379,6 +379,12 @@ Command::~Command()
ServerInstance->Parser.RemoveCommand(this);
}
+void Command::RegisterService()
+{
+ if (!ServerInstance->Parser.AddCommand(this))
+ throw ModuleException("Command already exists: " + name);
+}
+
void CommandParser::ProcessBuffer(std::string &buffer,LocalUser *user)
{
if (buffer.empty())
diff --git a/src/modules.cpp b/src/modules.cpp
index 3ff8aad14..d28657ca8 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -556,10 +556,6 @@ void ModuleManager::AddService(ServiceProvider& item)
{
switch (item.service)
{
- case SERVICE_COMMAND:
- if (!ServerInstance->Parser.AddCommand(static_cast<Command*>(&item)))
- throw ModuleException("Command "+std::string(item.name)+" already exists.");
- return;
case SERVICE_MODE:
{
ModeHandler* mh = static_cast<ModeHandler*>(&item);