summaryrefslogtreecommitdiffstats
path: root/src/Client/CommandParser.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2008-09-15 06:26:15 +0200
committerMatthias Schiffer <matthias@gamezock.de>2008-09-15 06:26:15 +0200
commit9ca70bbfa460fe1c6c31b8e685be6df24935ab73 (patch)
tree8fe0a6e164d7d2f4e5f23e073c0a80a0b29daf94 /src/Client/CommandParser.cpp
parent30bec92571ba23f1f2aa6b12149f6545a4ef0d7e (diff)
downloadmad-9ca70bbfa460fe1c6c31b8e685be6df24935ab73.tar
mad-9ca70bbfa460fe1c6c31b8e685be6df24935ab73.zip
Kann jetzt Status von Daemons abfragen
Diffstat (limited to 'src/Client/CommandParser.cpp')
-rw-r--r--src/Client/CommandParser.cpp120
1 files changed, 69 insertions, 51 deletions
diff --git a/src/Client/CommandParser.cpp b/src/Client/CommandParser.cpp
index badbef7..30a0c16 100644
--- a/src/Client/CommandParser.cpp
+++ b/src/Client/CommandParser.cpp
@@ -20,6 +20,7 @@
#include "CommandParser.h"
#include "Requests/CoreStatusRequest.h"
#include "Requests/DaemonListRequest.h"
+#include "Requests/DaemonStatusRequest.h"
#include <Common/Requests/DisconnectRequest.h>
#include <Net/Packets/HostStatusPacket.h>
#include <Net/Packets/NameListPacket.h>
@@ -57,57 +58,7 @@ void CommandParser::printUsage(const std::string& command) {
std::cerr << "Usage: " << cmd->cmdline << std::endl;
}
-void CommandParser::helpCommand(const std::vector<std::string> &args) {
- if(args.size() == 1) {
- std::cout << "Available commands:" << std::endl << std::endl;
-
- for(int i = 0; commands[i].commands[0] != 0; ++i) {
- std::cout << commands[i].commands[0];
-
- for(int j = 1; commands[i].commands[j] != 0; ++j)
- std::cout << ", " << commands[i].commands[j];
-
- std::cout << std::endl << "\t" << commands[i].desc << std::endl;
- }
- }
- else if(args.size() == 2) {
- const Command* command = findCommand(args[1]);
-
- if(command) {
- std::cout << "Usage: " << command->cmdline << std::endl << std::endl;
- std::cout << command->longdesc << std::endl;
- }
- else
- std::cerr << args[0] << ": Command '" << args[1] << "' doesn't exist." << std::endl;
- }
- else {
- std::cerr << args[0] << ": Too many arguments." << std::endl;
- printUsage("help");
- }
-}
-
-void CommandParser::listHostsCommand(const std::vector<std::string>&) {
- activeRequests++;
-
- Requests::DaemonListRequest::send(connection, sigc::mem_fun(this, &CommandParser::daemonListRequestFinished));
-}
-
-void CommandParser::statusCommand(const std::vector<std::string>&) {
- activeRequests++;
-
- Requests::CoreStatusRequest::send(connection, sigc::mem_fun(this, &CommandParser::coreStatusRequestFinished));
-}
-
-void CommandParser::exitCommand(const std::vector<std::string>&) {
- activeRequests++;
- disconnect = true;
-
- Common::Requests::DisconnectRequest::send(connection, sigc::mem_fun(this, &CommandParser::requestFinished));
-}
-
-void CommandParser::coreStatusRequestFinished(const Net::Packets::HostStatusPacket &packet) {
- std::cout << "Server status:" << std::endl;
-
+void CommandParser::printHostStatus(const Net::Packets::HostStatusPacket &packet) {
if(packet.getUptime()) {
unsigned long days = packet.getUptime()/86400;
unsigned long hours = (packet.getUptime()%86400)/3600;
@@ -158,6 +109,65 @@ void CommandParser::coreStatusRequestFinished(const Net::Packets::HostStatusPack
std::printf("\n");
}
+}
+
+void CommandParser::helpCommand(const std::vector<std::string> &args) {
+ if(args.size() == 1) {
+ std::cout << "Available commands:" << std::endl << std::endl;
+
+ for(int i = 0; commands[i].commands[0] != 0; ++i) {
+ std::cout << commands[i].commands[0];
+
+ for(int j = 1; commands[i].commands[j] != 0; ++j)
+ std::cout << ", " << commands[i].commands[j];
+
+ std::cout << std::endl << "\t" << commands[i].desc << std::endl;
+ }
+ }
+ else if(args.size() == 2) {
+ const Command* command = findCommand(args[1]);
+
+ if(command) {
+ std::cout << "Usage: " << command->cmdline << std::endl << std::endl;
+ std::cout << command->longdesc << std::endl;
+ }
+ else
+ std::cerr << args[0] << ": Command '" << args[1] << "' doesn't exist." << std::endl;
+ }
+ else {
+ std::cerr << args[0] << ": Too many arguments." << std::endl;
+ printUsage("help");
+ }
+}
+
+void CommandParser::listHostsCommand(const std::vector<std::string>&) {
+ activeRequests++;
+
+ Requests::DaemonListRequest::send(connection, sigc::mem_fun(this, &CommandParser::daemonListRequestFinished));
+}
+
+void CommandParser::statusCommand(const std::vector<std::string> &args) {
+ if(args.size() == 1)
+ Requests::CoreStatusRequest::send(connection, sigc::mem_fun(this, &CommandParser::coreStatusRequestFinished));
+ else if(args.size() == 2)
+ Requests::DaemonStatusRequest::send(connection, sigc::mem_fun(this, &CommandParser::daemonStatusRequestFinished), args[1]);
+ else
+ return;
+
+ activeRequests++;
+}
+
+void CommandParser::exitCommand(const std::vector<std::string>&) {
+ activeRequests++;
+ disconnect = true;
+
+ Common::Requests::DisconnectRequest::send(connection, sigc::mem_fun(this, &CommandParser::requestFinished));
+}
+
+void CommandParser::coreStatusRequestFinished(const Net::Packets::HostStatusPacket &packet) {
+ std::cout << "Server status:" << std::endl;
+
+ printHostStatus(packet);
requestFinished();
}
@@ -180,6 +190,14 @@ void CommandParser::daemonListRequestFinished(const Net::Packets::NameListPacket
requestFinished();
}
+void CommandParser::daemonStatusRequestFinished(const Net::Packets::HostStatusPacket &packet) {
+ std::cout << "Host status:" << std::endl;
+
+ printHostStatus(packet);
+
+ requestFinished();
+}
+
bool CommandParser::split(const std::string &str, std::vector<std::string> &ret) {
std::string temp;
bool quoteSingle = false, quoteDouble = false, escape = false;