From 46c110f7a14e4b5d0e8bd27259f7744ae8a36382 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 28 Feb 2009 19:09:43 +0100 Subject: DaemonListRequest und DaemonStateUpdateRequest benutzen jetzt XML --- .../RequestHandlers/DaemonListRequestHandler.cpp | 30 +++++++++++++++++----- .../RequestHandlers/DaemonListRequestHandler.h | 6 ++--- 2 files changed, 27 insertions(+), 9 deletions(-) (limited to 'src/Core/RequestHandlers') diff --git a/src/Core/RequestHandlers/DaemonListRequestHandler.cpp b/src/Core/RequestHandlers/DaemonListRequestHandler.cpp index dcf9f53..c20627f 100644 --- a/src/Core/RequestHandlers/DaemonListRequestHandler.cpp +++ b/src/Core/RequestHandlers/DaemonListRequestHandler.cpp @@ -20,18 +20,22 @@ #include "DaemonListRequestHandler.h" #include "../ConnectionManager.h" #include +#include #include -#include -#include namespace Mad { namespace Core { namespace RequestHandlers { -void DaemonListRequestHandler::handlePacket(Net::Connection *connection, const Net::Packet &packet) { - if(packet.getType() != Net::Packet::LIST_DAEMONS) { +void DaemonListRequestHandler::handlePacket(Net::Connection *connection, uint16_t requestId, const Common::XmlPacket &packet) { + if(packet.getType() != "ListHosts") { Common::Logger::log(Common::Logger::ERROR, "Received an unexpected packet."); - connection->send(Net::Packets::ErrorPacket(Net::Packet::ERROR, packet.getRequestId(), Common::Exception(Common::Exception::UNEXPECTED_PACKET))); + + Common::XmlPacket ret; + ret.setType("Error"); + ret.add("ErrorCode", Common::Exception::UNEXPECTED_PACKET); + + connection->send(ret.encode(requestId)); signalFinished().emit(); return; @@ -39,7 +43,21 @@ void DaemonListRequestHandler::handlePacket(Net::Connection *connection, const N // TODO Require authentication - connection->send(Net::Packets::HostListPacket(Net::Packet::OK, packet.getRequestId(), ConnectionManager::get()->getDaemonList())); + Common::XmlPacket ret; + ret.setType("OK"); + ret.addList("hosts"); + + std::vector daemons = ConnectionManager::get()->getDaemonList(); + + for(std::vector::iterator daemon = daemons.begin(); daemon != daemons.end(); ++daemon) { + ret["hosts"].addEntry(); + + ret["hosts"].back().add("name", daemon->getName()); + ret["hosts"].back().add("address", daemon->getIP()); + ret["hosts"].back().add("state", daemon->getState()); + } + + connection->send(ret.encode(requestId)); signalFinished().emit(); } diff --git a/src/Core/RequestHandlers/DaemonListRequestHandler.h b/src/Core/RequestHandlers/DaemonListRequestHandler.h index 205ad02..6fe2517 100644 --- a/src/Core/RequestHandlers/DaemonListRequestHandler.h +++ b/src/Core/RequestHandlers/DaemonListRequestHandler.h @@ -20,15 +20,15 @@ #ifndef MAD_CORE_REQUESTHANDLERS_DAEMONLISTREQUESTHANDLER_H_ #define MAD_CORE_REQUESTHANDLERS_DAEMONLISTREQUESTHANDLER_H_ -#include +#include namespace Mad { namespace Core { namespace RequestHandlers { -class DaemonListRequestHandler : public Common::RequestHandler { +class DaemonListRequestHandler : public Common::XmlRequestHandler { protected: - virtual void handlePacket(Net::Connection *connection, const Net::Packet &packet); + virtual void handlePacket(Net::Connection *connection, uint16_t requestId, const Common::XmlPacket &packet); public: DaemonListRequestHandler() {} -- cgit v1.2.3