summaryrefslogtreecommitdiffstats
path: root/src/Common/RequestManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/RequestManager.h')
-rw-r--r--src/Common/RequestManager.h20
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);