diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Client/CommandManager.cpp | 40 | ||||
-rw-r--r-- | src/Client/CommandManager.h | 1 | ||||
-rw-r--r-- | src/Client/CommandParser.cpp | 50 |
3 files changed, 31 insertions, 60 deletions
diff --git a/src/Client/CommandManager.cpp b/src/Client/CommandManager.cpp index 8a82a82..2a20b29 100644 --- a/src/Client/CommandManager.cpp +++ b/src/Client/CommandManager.cpp @@ -106,46 +106,6 @@ void CommandManager::daemonCommandRequestFinished(const Common::Request<> &reque requestFinished(); } -void CommandManager::daemonListRequestFinished(const Common::Request<Net::Packets::HostListPacket> &request, bool all) { - try { - const std::vector<Common::HostInfo>& hosts = request.getResult().getHostInfo(); - - if(hosts.empty()) { - std::cout << "The host list is empty." << std::endl << std::endl; - } - else { - bool output = false; - - for(std::vector<Common::HostInfo>::const_iterator host = hosts.begin(); host != hosts.end(); ++host) { - if(host->getStatus() == Common::HostInfo::INACTIVE && !all) - continue; - - if(!output) { - std::cout << (all ? "Host list:" : "Active hosts:") << std::endl; - output = true; - } - - std::cout << " " << host->getName(); - - if(all) - std::cout << " (" << (host->getStatus() == Common::HostInfo::RUNNING ? "running" : "inactive") << ")"; - - std::cout << std::endl; - } - - if(!output) - std::cout << "No active hosts." << std::endl; - - std::cout << std::endl; - } - } - catch(Common::Exception &exception) { - Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str()); - } - - requestFinished(); -} - void CommandManager::daemonStatusRequestFinished(const Common::Request<Net::Packets::HostStatusPacket> &request) { try { const Net::Packets::HostStatusPacket &packet = request.getResult(); diff --git a/src/Client/CommandManager.h b/src/Client/CommandManager.h index 6aea724..f93d07f 100644 --- a/src/Client/CommandManager.h +++ b/src/Client/CommandManager.h @@ -53,7 +53,6 @@ class CommandManager { void coreStatusRequestFinished(const Common::Request<Net::Packets::HostStatusPacket> &request); void daemonCommandRequestFinished(const Common::Request<> &request); - void daemonListRequestFinished(const Common::Request<Net::Packets::HostListPacket> &request, bool all); void daemonStatusRequestFinished(const Common::Request<Net::Packets::HostStatusPacket> &request); void disconnectRequestFinished(const Common::Request<> &request); diff --git a/src/Client/CommandParser.cpp b/src/Client/CommandParser.cpp index 663c214..4f1cb99 100644 --- a/src/Client/CommandParser.cpp +++ b/src/Client/CommandParser.cpp @@ -18,9 +18,9 @@ */ #include "CommandParser.h" +#include "InformationManager.h" #include "Requests/CoreStatusRequest.h" #include "Requests/DaemonCommandRequest.h" -#include "Requests/DaemonListRequest.h" #include "Requests/DaemonStatusRequest.h" #include <Common/Exception.h> #include <Common/Logger.h> @@ -95,36 +95,48 @@ void CommandParser::helpCommand(const std::vector<std::string> &args) { } void CommandParser::listHostsCommand(const std::vector<std::string> &args) { + const std::map<std::string, Common::HostInfo>& hosts = InformationManager::getInformationManager()->getDaemons(); + if(args.size() == 1) { - Common::RequestManager::getRequestManager()->sendRequest(connection, - std::auto_ptr<Common::RequestBase>( - new Requests::DaemonListRequest( - sigc::bind(sigc::mem_fun(commandManager, &CommandManager::daemonListRequestFinished), false) - ) - ) - ); + if(hosts.empty()) { + std::cout << "The host list is empty." << std::endl << std::endl; + return; + } + + bool output = false; + + for(std::map<std::string, Common::HostInfo>::const_iterator host = hosts.begin(); host != hosts.end(); ++host) { + if(host->second.getStatus() == Common::HostInfo::INACTIVE) + continue; + + if(!output) { + std::cout << "Active hosts:" << std::endl; + output = true; + } + + std::cout << " " << host->first << std::endl; + } } else if(args.size() > 2) { Common::Logger::logf(Common::Logger::ERROR, "%s: Too many arguments.", args[0].c_str()); printUsage("list_hosts"); - return; } else if(args[1] == "-a") { - Common::RequestManager::getRequestManager()->sendRequest(connection, - std::auto_ptr<Common::RequestBase>( - new Requests::DaemonListRequest( - sigc::bind(sigc::mem_fun(commandManager, &CommandManager::daemonListRequestFinished), true) - ) - ) - ); + if(hosts.empty()) { + std::cout << "The host list is empty." << std::endl << std::endl; + return; + } + + std::cout << "Host list:" << std::endl; + + for(std::map<std::string, Common::HostInfo>::const_iterator host = hosts.begin(); host != hosts.end(); ++host) { + std::cout << " " << host->first << " (" << (host->second.getStatus() == Common::HostInfo::RUNNING ? "running" : "inactive") << ")" << std::endl; + } } else { Common::Logger::logf(Common::Logger::ERROR, "%s: Don't unterstand argument '%s'.", args[0].c_str(), args[1].c_str()); printUsage("list_hosts"); - return; } - - commandManager.activeRequests++; } void CommandParser::rebootCommand(const std::vector<std::string> &args) { |