diff options
Diffstat (limited to 'src/Client/CommandParser.cpp')
-rw-r--r-- | src/Client/CommandParser.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/Client/CommandParser.cpp b/src/Client/CommandParser.cpp index 135f771..ab3dd50 100644 --- a/src/Client/CommandParser.cpp +++ b/src/Client/CommandParser.cpp @@ -19,13 +19,15 @@ #include "CommandParser.h" #include "InformationManager.h" -#include "Requests/CoreStatusRequest.h" +#include "Requests/DaemonFSInfoRequest.h" #include "Requests/DaemonCommandRequest.h" #include "Requests/DaemonStatusRequest.h" #include <Common/Exception.h> #include <Common/Logger.h> #include <Common/RequestManager.h> +#include <Common/Requests/FSInfoRequest.h> #include <Common/Requests/DisconnectRequest.h> +#include <Common/Requests/StatusRequest.h> #include <Net/Packets/HostListPacket.h> #include <Net/Packets/HostStatusPacket.h> @@ -37,6 +39,7 @@ namespace Mad { namespace Client { const CommandParser::Command CommandParser::commands[] = { + {{"fsinfo", 0}, "fsinfo [host]", "Displays file system usage information", "Displays file system usage information of a host or the server (if no host is given).", &CommandParser::fsinfoCommand}, {{"help", "?", 0}, "help [command]", "Displays usage information about commands", "Displays usage information about a command. If no command is given, a list of all available commands is displayed.", &CommandParser::helpCommand}, {{"list_hosts", "hosts", 0}, "list_hosts [-a]", "Lists the currently active hosts", "Lists the currently active hosts.\n\n -a\tAlso list inactive hosts", &CommandParser::listHostsCommand}, {{"reboot", 0}, "reboot *|host...", "Reboots host", "Reboots hosts. * will reboot all hosts.", &CommandParser::rebootCommand}, @@ -102,6 +105,20 @@ std::map<std::string, Common::HostInfo> CommandParser::parseHostList(const std:: } +void CommandParser::fsinfoCommand(const std::vector<std::string> &args) { + if(args.size() == 1) + Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr<Common::RequestBase>(new Common::Requests::FSInfoRequest(sigc::mem_fun(commandManager, &CommandManager::fsInfoRequestFinished)))); + else if(args.size() == 2) + Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr<Common::RequestBase>(new Requests::DaemonFSInfoRequest(args[1], sigc::mem_fun(commandManager, &CommandManager::daemonFSInfoRequestFinished)))); + else { + Common::Logger::logf(Common::Logger::ERROR, "%s: Too many arguments.", args[0].c_str()); + printUsage("fsinfo"); + return; + } + + commandManager.activeRequests++; +} + void CommandParser::helpCommand(const std::vector<std::string> &args) { if(args.size() == 1) { std::cout << "Available commands:" << std::endl << std::endl; @@ -221,7 +238,7 @@ void CommandParser::shutdownCommand(const std::vector<std::string> &args) { void CommandParser::statusCommand(const std::vector<std::string> &args) { if(args.size() == 1) - Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr<Common::RequestBase>(new Requests::CoreStatusRequest(sigc::mem_fun(commandManager, &CommandManager::coreStatusRequestFinished)))); + Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr<Common::RequestBase>(new Common::Requests::StatusRequest(sigc::mem_fun(commandManager, &CommandManager::statusRequestFinished)))); else if(args.size() == 2) Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr<Common::RequestBase>(new Requests::DaemonStatusRequest(args[1], sigc::mem_fun(commandManager, &CommandManager::daemonStatusRequestFinished)))); else { |