diff options
Diffstat (limited to 'src/Common/RequestManager.h')
-rw-r--r-- | src/Common/RequestManager.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/Common/RequestManager.h b/src/Common/RequestManager.h index 723e619..0bc8080 100644 --- a/src/Common/RequestManager.h +++ b/src/Common/RequestManager.h @@ -20,7 +20,7 @@ #ifndef MAD_COMMON_REQUESTMANAGER_H_ #define MAD_COMMON_REQUESTMANAGER_H_ -#include "Initializable.h" +#include "SingletonPtr.h" #include <Net/Connection.h> #include <map> @@ -32,7 +32,7 @@ namespace Common { class RequestBase; class RequestHandler; -class RequestManager : public Initializable { +class RequestManager { private: class RequestMap : private std::map<uint16_t,RequestHandler*> { private: @@ -65,7 +65,7 @@ class RequestManager : public Initializable { } }; - static RequestManager requestManager; + static SingletonPtr<RequestManager> requestManager; std::map<Net::Connection*,RequestMap*> requestMaps; bool core; @@ -81,19 +81,24 @@ class RequestManager : public Initializable { RequestManager(const RequestManager &o); RequestManager& operator=(const RequestManager &o); - RequestManager(); - void receiveHandler(Net::Connection *connection, const Net::Packet &packet); public: static RequestManager* get() { - return &requestManager; + return requestManager.get(); } + RequestManager(); + bool isCore() const {return core;} - void setCore(bool newCore) {core = newCore;} + void setCore(bool newCore) { + core = newCore; - virtual void doInit() {requestId = core ? -2 : -1;} + if(core) + requestId &= ~0x01; + else + requestId |= 0x01; + } void registerConnection(Net::Connection *connection); void unregisterConnection(Net::Connection *connection); |