diff options
| author | Shauren <shauren.trinity@gmail.com> | 2014-05-02 02:55:10 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2014-05-02 02:55:10 +0200 |
| commit | 6955d7c9ad0e55480aa97d9cafd878c6bc3dc426 (patch) | |
| tree | 2a0b11c84a75607ac9db4c6f0d2382d7157230a7 /src/server/authserver/Server/BattlenetManager.h | |
| parent | fea9d275fa0ed8f5b43dc54979cdd5a58afc993b (diff) | |
Core/Battle.net
* Fixed AuthResult codes
* Fixed BitStream::WriteBytes size check
* Fixed comparison operator for packet header
* Fixed channel for client packets without channel
* Implemented loading modules from database
Diffstat (limited to 'src/server/authserver/Server/BattlenetManager.h')
| -rw-r--r-- | src/server/authserver/Server/BattlenetManager.h | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/src/server/authserver/Server/BattlenetManager.h b/src/server/authserver/Server/BattlenetManager.h index d3962a32c0d..9fceb973770 100644 --- a/src/server/authserver/Server/BattlenetManager.h +++ b/src/server/authserver/Server/BattlenetManager.h @@ -32,20 +32,61 @@ namespace Battlenet std::string Platform; uint32 Build; }; + + struct ModuleKey + { + std::string Platform; + std::string Name; + + bool operator<(ModuleKey const& right) const + { + int32 res = Platform.compare(right.Platform); + if (res < 0) + return true; + else if (res > 0) + return false; + + return Name < right.Name; + } + }; + + struct ModuleInfo + { + ModuleInfo() : DataSize(0), Data(nullptr) { } + ModuleInfo(ModuleInfo const& right) : Type(right.Type), Region(right.Region), DataSize(right.DataSize), Data(nullptr) + { + memcpy(ModuleId, right.ModuleId, 32); + if (DataSize) + { + Data = new uint8[DataSize]; + memcpy(Data, right.Data, DataSize); + } + } + ~ModuleInfo() + { + delete Data; + } + + std::string Type; + std::string Region; + uint8 ModuleId[32]; + uint32 DataSize; + uint8* Data; + }; } class BattlenetMgr { friend class ACE_Singleton<BattlenetMgr, ACE_Null_Mutex>; BattlenetMgr() { } - ~BattlenetMgr() { } + ~BattlenetMgr(); public: void Load(); bool HasComponent(Battlenet::Component const* component) const; bool HasProgram(std::string const& program) const { return _programs.count(program); } bool HasPlatform(std::string const& platform) const { return _platforms.count(platform); } - bool HasBuild(uint32 build) const { return _builds.count(build); } + Battlenet::ModuleInfo const* GetModule(Battlenet::ModuleKey const& key) const; private: void LoadComponents(); @@ -54,7 +95,7 @@ private: std::set<Battlenet::Component*> _components; std::set<std::string> _programs; std::set<std::string> _platforms; - std::set<uint32> _builds; + std::map<Battlenet::ModuleKey, Battlenet::ModuleInfo*> _modules; }; #define sBattlenetMgr ACE_Singleton<BattlenetMgr, ACE_Null_Mutex>::instance() |
