+ /** Handle an internal request from another command, the core, or a module
+ * @param Command ID
+ * @param Zero or more parameters, whos form is specified by the command ID.
+ * @return Return CMD_SUCCESS on success, or CMD_FAILURE on failure.
+ * If the command succeeds but should remain local to this server,
+ * return CMD_LOCALONLY.
+ */
+ virtual CmdResult HandleInternal(const unsigned int /* id */, const std::deque<classbase*>& /* params */)
+ {
+ return CMD_INVALID;
+ }
+
+ /** Handle the command from a server.
+ * Not currently used in this version of InspIRCd.
+ * @param parameters The parameters given
+ * @param pcnt The number of parameters available
+ * @param servername The server name which issued the command
+ * @return Return CMD_SUCCESS on success, or CMD_FAILURE on failure.
+ * If the command succeeds but should remain local to this server,
+ * return CMD_LOCALONLY.
+ */
+ virtual CmdResult HandleServer(const char** /* parameters */, int /* pcnt */, const std::string& /* servername */)
+ {
+ return CMD_INVALID;
+ }
+
+ /** Disable or enable this command.
+ * @param setting True to disable the command.
+ */
+ void Disable(bool setting)
+ {
+ disabled = setting;
+ }
+
+ /** Obtain this command's disable state.
+ * @return true if the command is currently disabled
+ * (disabled commands can be used only by operators)
+ */
+ bool IsDisabled()
+ {
+ return disabled;
+ }
+
+ /** @return true if the command works before registration.
+ */
+ bool WorksBeforeReg()
+ {
+ return works_before_reg;
+ }
+
+ /** Standard constructor gubbins
+ */
+ virtual ~Command() {}