summaryrefslogtreecommitdiffstats
path: root/src/Core/RequestHandlers/DaemonStatusRequestHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Core/RequestHandlers/DaemonStatusRequestHandler.cpp')
-rw-r--r--src/Core/RequestHandlers/DaemonStatusRequestHandler.cpp23
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();
+}
+
}
}
}