From 9ca70bbfa460fe1c6c31b8e685be6df24935ab73 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 15 Sep 2008 06:26:15 +0200 Subject: Kann jetzt Status von Daemons abfragen --- src/Client/CommandParser.cpp | 120 +++++++++++++++++++++++++------------------ 1 file changed, 69 insertions(+), 51 deletions(-) (limited to 'src/Client/CommandParser.cpp') 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 #include #include @@ -57,57 +58,7 @@ void CommandParser::printUsage(const std::string& command) { std::cerr << "Usage: " << cmd->cmdline << std::endl; } -void CommandParser::helpCommand(const std::vector &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&) { - activeRequests++; - - Requests::DaemonListRequest::send(connection, sigc::mem_fun(this, &CommandParser::daemonListRequestFinished)); -} - -void CommandParser::statusCommand(const std::vector&) { - activeRequests++; - - Requests::CoreStatusRequest::send(connection, sigc::mem_fun(this, &CommandParser::coreStatusRequestFinished)); -} - -void CommandParser::exitCommand(const std::vector&) { - 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 &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&) { + activeRequests++; + + Requests::DaemonListRequest::send(connection, sigc::mem_fun(this, &CommandParser::daemonListRequestFinished)); +} + +void CommandParser::statusCommand(const std::vector &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&) { + 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 &ret) { std::string temp; bool quoteSingle = false, quoteDouble = false, escape = false; -- cgit v1.2.3