diff options
author | Attila Molnar <attilamolnar@hush.com> | 2015-11-23 12:50:35 +0100 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2015-11-23 12:50:35 +0100 |
commit | 42de16029da37f08ce1827352aa78b4b29d888cb (patch) | |
tree | b8f61d0a518df5d480285d4d6c16250921cdf42e | |
parent | 820f229a9efe2678d1e85578aa086a1efdd73a30 (diff) |
Implement Command::RegisterService()
-rw-r--r-- | include/ctables.h | 4 | ||||
-rw-r--r-- | src/command_parse.cpp | 6 | ||||
-rw-r--r-- | src/modules.cpp | 4 |
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); |