From 8f098fc3070f791302ec1f497588fab6ed409980 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 16 Mar 2009 19:13:42 +0100 Subject: Request- und RequestHandler-Interfaces vereinfacht --- src/Client/CommandParser.cpp | 28 ++++++++++++++++------------ src/Client/InformationManager.cpp | 13 +++++-------- src/Client/InformationManager.h | 9 +++------ src/Client/Requests/DaemonCommandRequest.cpp | 6 ++---- src/Client/Requests/DaemonCommandRequest.h | 7 ++++--- src/Client/Requests/DaemonFSInfoRequest.cpp | 5 ++--- src/Client/Requests/DaemonFSInfoRequest.h | 5 +++-- src/Client/Requests/DaemonListRequest.h | 3 ++- src/Client/Requests/DaemonStatusRequest.cpp | 5 ++--- src/Client/Requests/DaemonStatusRequest.h | 5 +++-- 10 files changed, 42 insertions(+), 44 deletions(-) (limited to 'src/Client') diff --git a/src/Client/CommandParser.cpp b/src/Client/CommandParser.cpp index 27aac78..7e3a90e 100644 --- a/src/Client/CommandParser.cpp +++ b/src/Client/CommandParser.cpp @@ -110,9 +110,9 @@ std::map CommandParser::parseHostList(const std:: void CommandParser::fsinfoCommand(const std::vector &args) { if(args.size() == 1) - Common::RequestManager::get()->sendRequest(connection, std::auto_ptr(new Common::Requests::FSInfoRequest(sigc::mem_fun(CommandManager::get(), &CommandManager::fsInfoRequestFinished)))); + Common::RequestManager::get()->sendRequest(connection, sigc::mem_fun(CommandManager::get(), &CommandManager::fsInfoRequestFinished)); else if(args.size() == 2) - Common::RequestManager::get()->sendRequest(connection, std::auto_ptr(new Requests::DaemonFSInfoRequest(args[1], sigc::mem_fun(CommandManager::get(), &CommandManager::daemonFSInfoRequestFinished)))); + Common::RequestManager::get()->sendRequest(connection, sigc::mem_fun(CommandManager::get(), &CommandManager::daemonFSInfoRequestFinished), args[1]); else { Common::Logger::logf(Common::Logger::ERROR, "%s: Too many arguments.", args[0].c_str()); printUsage("fsinfo"); @@ -213,9 +213,9 @@ void CommandParser::rebootCommand(const std::vector &args) { std::map hosts = parseHostList(std::vector(args.begin()+1, args.end()), true); for(std::map::iterator host = hosts.begin(); host != hosts.end(); ++host) { - Common::RequestManager::get()->sendRequest(connection, std::auto_ptr( - new Requests::DaemonCommandRequest(host->first, true, sigc::mem_fun(CommandManager::get(), &CommandManager::daemonCommandRequestFinished)) - )); + Common::RequestManager::get()->sendRequest(connection, + sigc::mem_fun(CommandManager::get(), &CommandManager::daemonCommandRequestFinished), host->first, true + ); ++CommandManager::get()->activeRequests; } @@ -231,9 +231,9 @@ void CommandParser::shutdownCommand(const std::vector &args) { std::map hosts = parseHostList(std::vector(args.begin()+1, args.end()), true); for(std::map::iterator host = hosts.begin(); host != hosts.end(); ++host) { - Common::RequestManager::get()->sendRequest(connection, std::auto_ptr( - new Requests::DaemonCommandRequest(host->first, false, sigc::mem_fun(CommandManager::get(), &CommandManager::daemonCommandRequestFinished)) - )); + Common::RequestManager::get()->sendRequest(connection, + sigc::mem_fun(CommandManager::get(), &CommandManager::daemonCommandRequestFinished), host->first, false + ); ++CommandManager::get()->activeRequests; } @@ -241,9 +241,11 @@ void CommandParser::shutdownCommand(const std::vector &args) { void CommandParser::statusCommand(const std::vector &args) { if(args.size() == 1) - Common::RequestManager::get()->sendRequest(connection, std::auto_ptr(new Common::Requests::StatusRequest(sigc::mem_fun(CommandManager::get(), &CommandManager::statusRequestFinished)))); + Common::RequestManager::get()->sendRequest(connection, + sigc::mem_fun(CommandManager::get(), &CommandManager::statusRequestFinished)); else if(args.size() == 2) - Common::RequestManager::get()->sendRequest(connection, std::auto_ptr(new Requests::DaemonStatusRequest(args[1], sigc::mem_fun(CommandManager::get(), &CommandManager::daemonStatusRequestFinished)))); + Common::RequestManager::get()->sendRequest(connection, + sigc::mem_fun(CommandManager::get(), &CommandManager::daemonStatusRequestFinished), args[1]); else { Common::Logger::logf(Common::Logger::ERROR, "%s: Too many arguments.", args[0].c_str()); printUsage("status"); @@ -256,13 +258,15 @@ void CommandParser::statusCommand(const std::vector &args) { void CommandParser::listUsersCommand(const std::vector&) { ++CommandManager::get()->activeRequests; - Common::RequestManager::get()->sendRequest(connection, std::auto_ptr(new Common::Requests::UserListRequest(sigc::mem_fun(CommandManager::get(), &CommandManager::userListRequestFinished)))); + Common::RequestManager::get()->sendRequest(connection, + sigc::mem_fun(CommandManager::get(), &CommandManager::userListRequestFinished)); } void CommandParser::exitCommand(const std::vector&) { ++CommandManager::get()->activeRequests; - Common::RequestManager::get()->sendRequest(connection, std::auto_ptr(new Common::Requests::DisconnectRequest(sigc::mem_fun(CommandManager::get(), &CommandManager::disconnectRequestFinished)))); + Common::RequestManager::get()->sendRequest(connection, + sigc::mem_fun(CommandManager::get(), &CommandManager::disconnectRequestFinished)); } bool CommandParser::parse(const std::string &cmd) { diff --git a/src/Client/InformationManager.cpp b/src/Client/InformationManager.cpp index cafe2fa..4c9800b 100644 --- a/src/Client/InformationManager.cpp +++ b/src/Client/InformationManager.cpp @@ -29,7 +29,7 @@ namespace Client { InformationManager InformationManager::informationManager; -void InformationManager::DaemonStateUpdateRequestHandler::handlePacket(Net::Connection *connection, uint16_t requestId, const Common::XmlPacket &packet) { +void InformationManager::DaemonStateUpdateRequestHandler::handlePacket(const Common::XmlPacket &packet) { if(packet.getType() != "UpdateHostState") { Common::Logger::log(Common::Logger::ERROR, "Received an unexpected packet."); @@ -37,7 +37,7 @@ void InformationManager::DaemonStateUpdateRequestHandler::handlePacket(Net::Conn ret.setType("Error"); ret.add("ErrorCode", Common::Exception::UNEXPECTED_PACKET); - connection->send(ret.encode(requestId)); + sendPacket(ret); signalFinished().emit(); return; @@ -53,7 +53,7 @@ void InformationManager::DaemonStateUpdateRequestHandler::handlePacket(Net::Conn Common::XmlPacket ret; ret.setType("OK"); - connection->send(ret.encode(requestId)); + sendPacket(ret); signalFinished().emit(); } @@ -71,11 +71,8 @@ void InformationManager::updateDaemonList(Net::Connection *con) { if(updating) return; - Common::RequestManager::get()->sendRequest(con, - std::auto_ptr( - new Requests::DaemonListRequest(sigc::mem_fun(this, &InformationManager::daemonListRequestFinished)) - ) - ); + Common::RequestManager::get()->sendRequest(con, + sigc::mem_fun(this, &InformationManager::daemonListRequestFinished)); updating = true; } diff --git a/src/Client/InformationManager.h b/src/Client/InformationManager.h index 566eaf6..369eefd 100644 --- a/src/Client/InformationManager.h +++ b/src/Client/InformationManager.h @@ -32,10 +32,6 @@ namespace Mad { namespace Net { class Connection; -namespace Packets { -class HostListPacket; -} - } namespace Client { @@ -44,10 +40,11 @@ class InformationManager : public Common::Initializable { private: class DaemonStateUpdateRequestHandler : public Common::RequestHandler { protected: - virtual void handlePacket(Net::Connection *connection, uint16_t requestId, const Common::XmlPacket &packet); + virtual void handlePacket(const Common::XmlPacket &packet); public: - DaemonStateUpdateRequestHandler() {} + DaemonStateUpdateRequestHandler(Net::Connection *connection, uint16_t requestId) + : RequestHandler(connection, requestId) {} }; static InformationManager informationManager; diff --git a/src/Client/Requests/DaemonCommandRequest.cpp b/src/Client/Requests/DaemonCommandRequest.cpp index 7b444cd..45a346b 100644 --- a/src/Client/Requests/DaemonCommandRequest.cpp +++ b/src/Client/Requests/DaemonCommandRequest.cpp @@ -18,20 +18,18 @@ */ #include "DaemonCommandRequest.h" -#include -#include namespace Mad { namespace Client { namespace Requests { -void DaemonCommandRequest::sendRequest(Net::Connection *connection, uint16_t requestId) { +void DaemonCommandRequest::sendRequest() { Common::XmlPacket packet; packet.setType("DaemonCommand"); packet.add("command", reboot ? "reboot" : "shutdown"); packet.add("daemon", daemon); - connection->send(packet.encode(requestId)); + sendPacket(packet); } } diff --git a/src/Client/Requests/DaemonCommandRequest.h b/src/Client/Requests/DaemonCommandRequest.h index fa1e436..4e9e2d1 100644 --- a/src/Client/Requests/DaemonCommandRequest.h +++ b/src/Client/Requests/DaemonCommandRequest.h @@ -20,7 +20,7 @@ #ifndef MAD_CLIENT_REQUEST_DAEMONCOMMANDREQUEST_H_ #define MAD_CLIENT_REQUEST_DAEMONCOMMANDREQUEST_H_ -#include +#include #include namespace Mad { @@ -33,10 +33,11 @@ class DaemonCommandRequest : public Common::Request { bool reboot; protected: - virtual void sendRequest(Net::Connection *connection, uint16_t requestId); + virtual void sendRequest(); public: - DaemonCommandRequest(const std::string &daemon0, bool reboot0, slot_type slot) : Common::Request(slot), daemon(daemon0), reboot(reboot0) {} + DaemonCommandRequest(Net::Connection *connection, uint16_t requestId, slot_type slot, const std::string &daemon0, bool reboot0) + : Common::Request(connection, requestId, slot), daemon(daemon0), reboot(reboot0) {} }; } diff --git a/src/Client/Requests/DaemonFSInfoRequest.cpp b/src/Client/Requests/DaemonFSInfoRequest.cpp index acd1179..5d77850 100644 --- a/src/Client/Requests/DaemonFSInfoRequest.cpp +++ b/src/Client/Requests/DaemonFSInfoRequest.cpp @@ -18,18 +18,17 @@ */ #include "DaemonFSInfoRequest.h" -#include namespace Mad { namespace Client { namespace Requests { -void DaemonFSInfoRequest::sendRequest(Net::Connection *connection, uint16_t requestId) { +void DaemonFSInfoRequest::sendRequest() { Common::XmlPacket packet; packet.setType("DaemonFSInfo"); packet.add("daemon", daemon); - connection->send(packet.encode(requestId)); + sendPacket(packet); } } diff --git a/src/Client/Requests/DaemonFSInfoRequest.h b/src/Client/Requests/DaemonFSInfoRequest.h index ac29a8b..2e6a68f 100644 --- a/src/Client/Requests/DaemonFSInfoRequest.h +++ b/src/Client/Requests/DaemonFSInfoRequest.h @@ -33,10 +33,11 @@ class DaemonFSInfoRequest : public Common::Request { std::string daemon; protected: - virtual void sendRequest(Net::Connection *connection, uint16_t requestId); + virtual void sendRequest(); public: - DaemonFSInfoRequest(const std::string &daemon0, slot_type slot) : Common::Request(slot), daemon(daemon0) {} + DaemonFSInfoRequest(Net::Connection *connection, uint16_t requestId, slot_type slot, const std::string &daemon0) + : Common::Request(connection, requestId, slot), daemon(daemon0) {} }; } diff --git a/src/Client/Requests/DaemonListRequest.h b/src/Client/Requests/DaemonListRequest.h index 2387387..017d355 100644 --- a/src/Client/Requests/DaemonListRequest.h +++ b/src/Client/Requests/DaemonListRequest.h @@ -28,7 +28,8 @@ namespace Requests { class DaemonListRequest : public Common::Requests::SimpleRequest { public: - DaemonListRequest(slot_type slot) : SimpleRequest("ListHosts", slot) {} + DaemonListRequest(Net::Connection *connection, uint16_t requestId, slot_type slot) + : SimpleRequest(connection, requestId, slot, "ListHosts") {} }; } diff --git a/src/Client/Requests/DaemonStatusRequest.cpp b/src/Client/Requests/DaemonStatusRequest.cpp index 7611d30..9f0a9a0 100644 --- a/src/Client/Requests/DaemonStatusRequest.cpp +++ b/src/Client/Requests/DaemonStatusRequest.cpp @@ -18,18 +18,17 @@ */ #include "DaemonStatusRequest.h" -#include namespace Mad { namespace Client { namespace Requests { -void DaemonStatusRequest::sendRequest(Net::Connection *connection, uint16_t requestId) { +void DaemonStatusRequest::sendRequest() { Common::XmlPacket packet; packet.setType("GetDaemonStatus"); packet.add("daemonName", daemon); - connection->send(packet.encode(requestId)); + sendPacket(packet); } } diff --git a/src/Client/Requests/DaemonStatusRequest.h b/src/Client/Requests/DaemonStatusRequest.h index bf8b7bf..83cba67 100644 --- a/src/Client/Requests/DaemonStatusRequest.h +++ b/src/Client/Requests/DaemonStatusRequest.h @@ -33,10 +33,11 @@ class DaemonStatusRequest : public Common::Request { std::string daemon; protected: - virtual void sendRequest(Net::Connection *connection, uint16_t requestId); + virtual void sendRequest(); public: - DaemonStatusRequest(const std::string &daemon0, slot_type slot) : Common::Request(slot), daemon(daemon0) {} + DaemonStatusRequest(Net::Connection *connection, uint16_t requestId, slot_type slot, const std::string &daemon0) + : Common::Request(connection, requestId, slot), daemon(daemon0) {} }; } -- cgit v1.2.3