summaryrefslogtreecommitdiffstats
path: root/src/Common/RequestManager.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-06-06 15:01:07 +0200
committerMatthias Schiffer <matthias@gamezock.de>2009-06-06 15:01:07 +0200
commit454cfccd51e2b9ad453fe79df04360fcd6eeb742 (patch)
treeb7d7f9026a34a32f36dd696a523533762d03d7d9 /src/Common/RequestManager.cpp
parent82949d1a4372c3b9e200c382dc709a09efaa7519 (diff)
downloadmad-454cfccd51e2b9ad453fe79df04360fcd6eeb742.tar
mad-454cfccd51e2b9ad453fe79df04360fcd6eeb742.zip
User-RequestHandler zur UserRequestHandlerGroup zusammengefasst
Diffstat (limited to 'src/Common/RequestManager.cpp')
-rw-r--r--src/Common/RequestManager.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/Common/RequestManager.cpp b/src/Common/RequestManager.cpp
index 3785b3f..b443292 100644
--- a/src/Common/RequestManager.cpp
+++ b/src/Common/RequestManager.cpp
@@ -108,21 +108,24 @@ void RequestManager::receiveHandler(Connection *connection, boost::shared_ptr<co
return;
}
- std::map<std::string, boost::shared_ptr<RequestHandlerFactory> >::iterator factoryIt = requestHandlerFactories.find(packet->getType());
- if(factoryIt != requestHandlerFactories.end()) {
- {
- boost::upgrade_to_unique_lock<boost::shared_mutex> upgradeLock(lock);
+ std::map<std::string, boost::shared_ptr<RequestHandlerGroup> >::iterator rgh = requestHandlerGroups.find(packet->getType());
+ if(rgh != requestHandlerGroups.end()) {
+ request = rgh->second->createRequestHandler(packet->getType());
- request = factoryIt->second->createRequestHandler();
- requestMap.addRequest(connection, requestId, request);
- request->connectSignalFinished(boost::bind(&RequestManager::handleRequestFinished, this, connection, requestId));
+ if(request) {
+ {
+ boost::upgrade_to_unique_lock<boost::shared_mutex> upgradeLock(lock);
- }
+ requestMap.addRequest(connection, requestId, request);
+ request->connectSignalFinished(boost::bind(&RequestManager::handleRequestFinished, this, connection, requestId));
- lock.unlock();
- Net::ThreadManager::get()->pushWork(boost::bind(&RequestHandler::handlePacket, request, packet));
+ }
- return;
+ lock.unlock();
+ Net::ThreadManager::get()->pushWork(boost::bind(&RequestHandler::handlePacket, request, packet));
+
+ return;
+ }
}
lock.unlock();