summaryrefslogtreecommitdiffstats
path: root/src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp')
-rw-r--r--src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp b/src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp
index a9791b5..c66e3d3 100644
--- a/src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp
+++ b/src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp
@@ -27,8 +27,8 @@ namespace Mad {
namespace Server {
namespace RequestHandlers {
-void DaemonFSInfoRequestHandler::handlePacket(const Common::XmlPacket &packet) {
- if(packet.getType() != "DaemonFSInfo") {
+void DaemonFSInfoRequestHandler::handlePacket(boost::shared_ptr<const Common::XmlPacket> packet) {
+ if(packet->getType() != "DaemonFSInfo") {
Common::Logger::log(Common::Logger::ERROR, "Received an unexpected packet.");
Common::XmlPacket ret;
@@ -44,9 +44,11 @@ void DaemonFSInfoRequestHandler::handlePacket(const Common::XmlPacket &packet) {
// TODO Require authentication
try {
- boost::shared_ptr<Common::Connection> daemonCon = ConnectionManager::get()->getDaemonConnection(packet["daemon"]);
- Common::RequestManager::get()->sendRequest0<Common::Requests::FSInfoRequest>(daemonCon.get(),
- boost::bind(&DaemonFSInfoRequestHandler::requestFinished, this, _1));
+ boost::shared_ptr<Common::Connection> daemonCon = ConnectionManager::get()->getDaemonConnection((*packet)["daemon"]);
+
+ boost::shared_ptr<Common::Requests::FSInfoRequest> request(new Common::Requests::FSInfoRequest);
+ request->connectSignalFinished(boost::bind(&DaemonFSInfoRequestHandler::requestFinished, this, _1, _2));
+ Common::RequestManager::get()->sendRequest(daemonCon.get(), request);
}
catch(Net::Exception &e) {
Common::XmlPacket ret;
@@ -60,20 +62,20 @@ void DaemonFSInfoRequestHandler::handlePacket(const Common::XmlPacket &packet) {
}
}
-void DaemonFSInfoRequestHandler::requestFinished(Common::Request &request) {
- try {
- sendPacket(request.getResult());
- }
- catch(Net::Exception &e) {
+void DaemonFSInfoRequestHandler::requestFinished(boost::shared_ptr<const Common::XmlPacket> packet, Net::Exception error) {
+ if(error) {
Common::XmlPacket ret;
ret.setType("Error");
- ret.add("ErrorCode", e.getErrorCode());
- ret.add("SubCode", e.getSubCode());
- ret.add("SubSubCode", e.getSubSubCode());
- ret.add("Where", e.getWhere());
+ ret.add("ErrorCode", error.getErrorCode());
+ ret.add("SubCode", error.getSubCode());
+ ret.add("SubSubCode", error.getSubSubCode());
+ ret.add("Where", error.getWhere());
sendPacket(ret);
}
+ else {
+ sendPacket(*packet);
+ }
signalFinished();
}