*/
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
*/
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())
{
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);