summaryrefslogtreecommitdiff
path: root/include/ctables.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ctables.h')
-rw-r--r--include/ctables.h53
1 files changed, 52 insertions, 1 deletions
diff --git a/include/ctables.h b/include/ctables.h
index 7d1173307..9eae05257 100644
--- a/include/ctables.h
+++ b/include/ctables.h
@@ -41,11 +41,14 @@ enum CmdResult
#define CMD_LOCALONLY CMD_FAILURE
-/** A structure that defines a command
+/** A structure that defines a command. Every command available
+ * in InspIRCd must be defined as derived from command_t.
*/
class command_t : public Extensible
{
protected:
+ /** Owner/Creator object
+ */
InspIRCd* ServerInstance;
public:
/** Command name
@@ -77,6 +80,16 @@ class command_t : public Extensible
*/
std::string syntax;
+ /** Create a new command.
+ * @param Instance Pointer to creator class
+ * @param cmd Command name. This must be UPPER CASE.
+ * @param flags User modes required to execute the command.
+ * For oper only commands, set this to 'o', otherwise use 0.
+ * @param minpara Minimum parameters required for the command.
+ * @param before_reg If this is set to true, the command will
+ * be allowed before the user is 'registered' (has sent USER,
+ * NICK, optionally PASS, and been resolved).
+ */
command_t(InspIRCd* Instance, const std::string &cmd, char flags, int minpara, int before_reg = false) : ServerInstance(Instance), command(cmd), flags_needed(flags), min_params(minpara), disabled(false), works_before_reg(before_reg)
{
use_count = total_bytes = 0;
@@ -84,36 +97,74 @@ class command_t : public Extensible
syntax = "";
}
+ /** Handle the command from a user.
+ * @param parameters The parameters for the command.
+ * @param pcnt The number of parameters available in 'parameters'
+ * @param user The user who 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 Handle(const char** parameters, int pcnt, userrec* user) = 0;
+ /** 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_t() {}
};
+/** A hash of commands used by the core
+ */
typedef nspace::hash_map<std::string,command_t*> command_table;
#endif
+