diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-06-06 15:01:07 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-06-06 15:01:07 +0200 |
commit | 454cfccd51e2b9ad453fe79df04360fcd6eeb742 (patch) | |
tree | b7d7f9026a34a32f36dd696a523533762d03d7d9 /src/Common/RequestManager.cpp | |
parent | 82949d1a4372c3b9e200c382dc709a09efaa7519 (diff) | |
download | mad-454cfccd51e2b9ad453fe79df04360fcd6eeb742.tar mad-454cfccd51e2b9ad453fe79df04360fcd6eeb742.zip |
User-RequestHandler zur UserRequestHandlerGroup zusammengefasst
Diffstat (limited to 'src/Common/RequestManager.cpp')
-rw-r--r-- | src/Common/RequestManager.cpp | 25 |
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(); |