aboutsummaryrefslogtreecommitdiff
path: root/src/server/bnetserver/Server/SessionManager.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-03-28 17:12:57 +0200
committerShauren <shauren.trinity@gmail.com>2016-03-28 17:12:57 +0200
commitdde620c402daf4ea8d132fb72a77eabc22f7a6d0 (patch)
tree7c12161d7a22915736b0c9a106de896eeb283399 /src/server/bnetserver/Server/SessionManager.h
parent619669c6209441fc2fb5b483d553badee8c30ad5 (diff)
Core: Updated to 6.2.4
* Rewrite bnetserver for new authentication protocol
Diffstat (limited to 'src/server/bnetserver/Server/SessionManager.h')
-rw-r--r--src/server/bnetserver/Server/SessionManager.h47
1 files changed, 2 insertions, 45 deletions
diff --git a/src/server/bnetserver/Server/SessionManager.h b/src/server/bnetserver/Server/SessionManager.h
index 701802056da..c1aa955812c 100644
--- a/src/server/bnetserver/Server/SessionManager.h
+++ b/src/server/bnetserver/Server/SessionManager.h
@@ -18,68 +18,25 @@
#ifndef SessionManager_h__
#define SessionManager_h__
-#include "Session.h"
#include "SocketMgr.h"
-#include <boost/thread/locks.hpp>
-#include <boost/thread/shared_mutex.hpp>
+#include "Session.h"
namespace Battlenet
{
-#pragma pack(push, 1)
-
- struct SessionInfo
- {
- uint32 AccountId;
- uint32 GameAccountId;
-
- bool operator<(SessionInfo const& right) const
- {
- return memcmp(this, &right, sizeof(SessionInfo)) < 0;
- }
- };
-
-#pragma pack(pop)
-
class SessionManager : public SocketMgr<Session>
{
typedef SocketMgr<Session> BaseSocketMgr;
- typedef std::map<SessionInfo, Session*> SessionMap;
- typedef std::map<uint32, std::list<Session*>> SessionByAccountMap;
public:
- static SessionManager& Instance()
- {
- static SessionManager instance;
- return instance;
- }
+ static SessionManager& Instance();
bool StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port, int threadCount = 1) override;
- // noop for now, will be needed later to broadcast realmlist updates for example
- void AddSession(Session* /*session*/);
-
- void RemoveSession(Session* /*session*/);
-
- Session* GetSession(uint32 accountId, uint32 gameAccountId) const;
- std::list<Session*> GetSessions(uint32 accountId) const;
-
- template<typename Iterator>
- void LockedForEach(Iterator iterator) const
- {
- boost::shared_lock<boost::shared_mutex> lock(_sessionMutex);
- for (SessionMap::value_type const& pair : _sessions)
- iterator(pair.second);
- }
-
protected:
NetworkThread<Session>* CreateThreads() const override;
private:
static void OnSocketAccept(tcp::socket&& sock, uint32 threadIndex);
-
- SessionMap _sessions;
- SessionByAccountMap _sessionsByAccountId;
- mutable boost::shared_mutex _sessionMutex;
};
}