diff options
Diffstat (limited to 'src/Core/RequestHandlers/DaemonStatusRequestHandler.cpp')
-rw-r--r-- | src/Core/RequestHandlers/DaemonStatusRequestHandler.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/Core/RequestHandlers/DaemonStatusRequestHandler.cpp b/src/Core/RequestHandlers/DaemonStatusRequestHandler.cpp index 81f066d..0179ecc 100644 --- a/src/Core/RequestHandlers/DaemonStatusRequestHandler.cpp +++ b/src/Core/RequestHandlers/DaemonStatusRequestHandler.cpp @@ -19,32 +19,39 @@ #include "DaemonStatusRequestHandler.h" #include "../ConnectionManager.h" -#include <Net/Packet.h> +#include <Core/Requests/DaemonStatusRequest.h> +#include <Net/Packets/HostStatusPacket.h> namespace Mad { namespace Core { namespace RequestHandlers { -bool DaemonStatusRequestHandler::handlePacket(Net::Connection*, const Net::Packet &packet) { - if(isFinished()) - return false; - +bool DaemonStatusRequestHandler::handlePacket(Net::Connection *connection, const Net::Packet &packet) { if(packet.getType() != Net::Packet::DAEMON_STATUS) return false; // TODO Logging // TODO Require authentication + con = connection; + requestId = packet.getRequestId(); + std::string daemonName((char*)packet.getData(), packet.getLength()); - /*Net::Connection *daemonCon = connectionManager->getDaemonConnection(daemonName); + Net::Connection *daemonCon = ConnectionManager::getConnectionManager()->getDaemonConnection(daemonName); if(!daemonCon) - return false;*/ - + return false; + Requests::DaemonStatusRequest::send(daemonCon, sigc::mem_fun(this, &DaemonStatusRequestHandler::requestFinished)); return true; } +void DaemonStatusRequestHandler::requestFinished(const Net::Packets::HostStatusPacket &packet) { + con->send(Net::Packet(Net::Packet::OK, requestId, packet.getData(), packet.getLength())); + + signalFinished().emit(); +} + } } } |