diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-06-04 22:23:07 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-06-04 22:23:07 +0200 |
commit | 0b27c37fe95c6aced613d51a3624f8930a96ad3f (patch) | |
tree | 5cb92568f70fe9789e99633ec71048389efb7fa4 /src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp | |
parent | 50d92f64547c5c06851976ceab5ed631ec93f647 (diff) | |
download | mad-0b27c37fe95c6aced613d51a3624f8930a96ad3f.tar mad-0b27c37fe95c6aced613d51a3624f8930a96ad3f.zip |
RequestHandler-Interface ?berarbeitet
Diffstat (limited to 'src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp')
-rw-r--r-- | src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp | 30 |
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(); } |