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.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/Common/RequestManager.h b/src/Common/RequestManager.h
index 2ca10e7..795f277 100644
--- a/src/Common/RequestManager.h
+++ b/src/Common/RequestManager.h
@@ -22,7 +22,10 @@
#include "RequestHandler.h"
#include <Net/Connection.h>
+
#include <map>
+#include <memory>
+
namespace Mad {
namespace Common {
@@ -68,9 +71,7 @@ class RequestManager {
}
};
- // Prevent shallow copy
- RequestManager(const RequestManager &o);
- RequestManager& operator=(const RequestManager &o);
+ static std::auto_ptr<RequestManager> requestManager;
std::map<Net::Connection*,RequestMap*> requestMaps;
uint16_t requestId;
@@ -81,9 +82,23 @@ class RequestManager {
return requestId+=2;
}
+ // Prevent shallow copy
+ RequestManager(const RequestManager &o);
+ RequestManager& operator=(const RequestManager &o);
+
+ RequestManager(bool core);
+
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();
+ }
+
void registerConnection(Net::Connection *connection);
void unregisterConnection(Net::Connection *connection);
@@ -95,7 +110,6 @@ class RequestManager {
bool sendRequest(Net::Connection *connection, Request *request);
- RequestManager(bool core);
virtual ~RequestManager();
};