diff options
Diffstat (limited to 'src/Common/RequestManager.h')
-rw-r--r-- | src/Common/RequestManager.h | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/Common/RequestManager.h b/src/Common/RequestManager.h index 2013860..b0002d0 100644 --- a/src/Common/RequestManager.h +++ b/src/Common/RequestManager.h @@ -20,19 +20,19 @@ #ifndef MAD_COMMON_REQUESTMANAGER_H_ #define MAD_COMMON_REQUESTMANAGER_H_ +#include "Initializable.h" #include <Net/Connection.h> #include <map> #include <memory> - namespace Mad { namespace Common { class RequestBase; class RequestHandler; -class RequestManager { +class RequestManager : public Initializable { private: class RequestMap : private std::map<uint16_t,RequestHandler*> { private: @@ -65,9 +65,10 @@ class RequestManager { } }; - static std::auto_ptr<RequestManager> requestManager; + static RequestManager requestManager; std::map<Net::Connection*,RequestMap*> requestMaps; + bool core; uint16_t requestId; std::map<Net::Packet::Type,RequestHandlerFactory*> requestHandlerFactories; @@ -80,19 +81,20 @@ class RequestManager { RequestManager(const RequestManager &o); RequestManager& operator=(const RequestManager &o); - RequestManager(bool core); + RequestManager(); void receiveHandler(Net::Connection *connection, const Net::Packet &packet); public: - static void init(bool core) { - requestManager = std::auto_ptr<RequestManager>(new RequestManager(core)); - } - static RequestManager* getRequestManager() { - return requestManager.get(); + return &requestManager; } + bool isCore() const {return core;} + void setCore(bool newCore) {core = newCore;} + + virtual void doInit() {requestId = core ? -2 : -1;} + void registerConnection(Net::Connection *connection); void unregisterConnection(Net::Connection *connection); |