#ifndef __Command_h__ #define __Command_h__ #include "includes" #include "Object.h" namespace core { class Session; /// /// Command /// /// Use the Command object in combination with a CommandList object to maintain /// a list of functions that can be invoked as a result of processing a request. /// class Command : public Object { public: /// /// Implement check method to provide a special check rule upon the request to see /// if the command should be processed. /// /// The default rule is to verify that the first token in the request string matches /// the name given on the registration of the command to the CommandList. This can /// be overridden by implementing the check() method to perform the test and return /// the condition of the command. /// /// @param request The request passed to the parser to check the rule. /// @return Return true to execute the command. Returning false will cause no action /// on this command. /// virtual bool check(std::string request); /// /// This method is used to implement the functionality of the requested command. /// This pure virtual function must be implemented in your inheriting object. /// /// @param request The request that was entered by the user to invoke this command. /// @param session Specify the requesting session so that the execution of the /// command process can return its output to the session. /// @return Returns 0 if execution of the command was successful. Otherwise returns /// a non-zero value indicating an error condition. /// virtual int processCommand(std::string request, Session *session) = 0; /// /// Specify the output that will occur to the specified session. /// /// @param session The session that will receive the output. /// virtual void output(Session *session); /// /// Set the name of this command used in default rule checking during request parsing. /// NOTE: You do not need to call this under normal conditions as adding a Command /// to a CommandList using the add() method contains a parameter to pass the name /// of the Command. /// /// @param name Specify the name of this command for default parsing. /// void setName(std::string name); std::string getName(); private: std::string name; }; } #endif