diff options
author | ariel- <ariel-@users.noreply.github.com> | 2017-06-19 23:20:06 -0300 |
---|---|---|
committer | ariel- <ariel-@users.noreply.github.com> | 2017-06-19 23:20:06 -0300 |
commit | 85a7d5ce9ac68b30da2277cc91d4b70358f1880d (patch) | |
tree | df3d2084ee2e35008903c03178039b9c986e2d08 /src/server/shared/Realm | |
parent | 052fc24315ace866ea1cf610e85df119b68100c9 (diff) |
Core: ported headers cleanup from master branch
Diffstat (limited to 'src/server/shared/Realm')
-rw-r--r-- | src/server/shared/Realm/Realm.cpp | 19 | ||||
-rw-r--r-- | src/server/shared/Realm/Realm.h | 11 | ||||
-rw-r--r-- | src/server/shared/Realm/RealmList.cpp | 35 | ||||
-rw-r--r-- | src/server/shared/Realm/RealmList.h | 33 |
4 files changed, 57 insertions, 41 deletions
diff --git a/src/server/shared/Realm/Realm.cpp b/src/server/shared/Realm/Realm.cpp index 2768e17848b..571e798cc76 100644 --- a/src/server/shared/Realm/Realm.cpp +++ b/src/server/shared/Realm/Realm.cpp @@ -16,8 +16,9 @@ */ #include "Realm.h" +#include <boost/asio/ip/basic_endpoint.hpp> -boost::asio::ip::tcp::endpoint Realm::GetAddressForClient(boost::asio::ip::address const& clientAddr) const +boost::asio::ip::tcp_endpoint Realm::GetAddressForClient(boost::asio::ip::address const& clientAddr) const { boost::asio::ip::address realmIp; @@ -25,29 +26,27 @@ boost::asio::ip::tcp::endpoint Realm::GetAddressForClient(boost::asio::ip::addre if (clientAddr.is_loopback()) { // Try guessing if realm is also connected locally - if (LocalAddress.is_loopback() || ExternalAddress.is_loopback()) + if (LocalAddress->is_loopback() || ExternalAddress->is_loopback()) realmIp = clientAddr; else { // Assume that user connecting from the machine that bnetserver is located on // has all realms available in his local network - realmIp = LocalAddress; + realmIp = *LocalAddress; } } else { if (clientAddr.is_v4() && - (clientAddr.to_v4().to_ulong() & LocalSubnetMask.to_v4().to_ulong()) == - (LocalAddress.to_v4().to_ulong() & LocalSubnetMask.to_v4().to_ulong())) + (clientAddr.to_v4().to_ulong() & LocalSubnetMask->to_v4().to_ulong()) == + (LocalAddress->to_v4().to_ulong() & LocalSubnetMask->to_v4().to_ulong())) { - realmIp = LocalAddress; + realmIp = *LocalAddress; } else - realmIp = ExternalAddress; + realmIp = *ExternalAddress; } - boost::asio::ip::tcp::endpoint endpoint(realmIp, Port); - // Return external IP - return endpoint; + return boost::asio::ip::tcp_endpoint(realmIp, Port); } diff --git a/src/server/shared/Realm/Realm.h b/src/server/shared/Realm/Realm.h index e3cf181c120..b9b70592f0f 100644 --- a/src/server/shared/Realm/Realm.h +++ b/src/server/shared/Realm/Realm.h @@ -19,8 +19,7 @@ #define Realm_h__ #include "Common.h" -#include <boost/asio/ip/address.hpp> -#include <boost/asio/ip/tcp.hpp> +#include "AsioHacksFwd.h" enum RealmFlags { @@ -68,9 +67,9 @@ struct TC_SHARED_API Realm { RealmHandle Id; uint32 Build; - boost::asio::ip::address ExternalAddress; - boost::asio::ip::address LocalAddress; - boost::asio::ip::address LocalSubnetMask; + std::unique_ptr<boost::asio::ip::address> ExternalAddress; + std::unique_ptr<boost::asio::ip::address> LocalAddress; + std::unique_ptr<boost::asio::ip::address> LocalSubnetMask; uint16 Port; std::string Name; uint8 Type; @@ -79,7 +78,7 @@ struct TC_SHARED_API Realm AccountTypes AllowedSecurityLevel; float PopulationLevel; - boost::asio::ip::tcp::endpoint GetAddressForClient(boost::asio::ip::address const& clientAddr) const; + boost::asio::ip::tcp_endpoint GetAddressForClient(boost::asio::ip::address const& clientAddr) const; }; #endif // Realm_h__ diff --git a/src/server/shared/Realm/RealmList.cpp b/src/server/shared/Realm/RealmList.cpp index 37dd6bbaa17..a4a92ce0ec0 100644 --- a/src/server/shared/Realm/RealmList.cpp +++ b/src/server/shared/Realm/RealmList.cpp @@ -17,16 +17,18 @@ */ #include "RealmList.h" -#include "Database/DatabaseEnv.h" +#include "DatabaseEnv.h" +#include "Log.h" #include "Util.h" +#include <boost/asio/deadline_timer.hpp> +#include <boost/asio/ip/tcp.hpp> -RealmList::RealmList() : _updateInterval(0), _updateTimer(nullptr), _resolver(nullptr) +RealmList::RealmList() : _updateInterval(0) { } RealmList::~RealmList() { - delete _updateTimer; } RealmList* RealmList::Instance() @@ -39,8 +41,8 @@ RealmList* RealmList::Instance() void RealmList::Initialize(boost::asio::io_service& ioService, uint32 updateInterval) { _updateInterval = updateInterval; - _updateTimer = new boost::asio::deadline_timer(ioService); - _resolver = new boost::asio::ip::tcp::resolver(ioService); + _updateTimer = Trinity::make_unique<boost::asio::deadline_timer>(ioService); + _resolver = Trinity::make_unique<boost::asio::ip::tcp::resolver>(ioService); // Get the content of the realmlist table in the database UpdateRealms(boost::system::error_code()); @@ -51,9 +53,9 @@ void RealmList::Close() _updateTimer->cancel(); } -void RealmList::UpdateRealm(RealmHandle const& id, uint32 build, const std::string& name, boost::asio::ip::address const& address, boost::asio::ip::address const& localAddr, - boost::asio::ip::address const& localSubmask, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, - float population) +void RealmList::UpdateRealm(RealmHandle const& id, uint32 build, std::string const& name, + boost::asio::ip::address const& address, boost::asio::ip::address const& localAddr, boost::asio::ip::address const& localSubmask, + uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population) { // Create new if not exist or update existed Realm& realm = _realms[id]; @@ -66,9 +68,12 @@ void RealmList::UpdateRealm(RealmHandle const& id, uint32 build, const std::stri realm.Timezone = timezone; realm.AllowedSecurityLevel = allowedSecurityLevel; realm.PopulationLevel = population; - realm.ExternalAddress = address; - realm.LocalAddress = localAddr; - realm.LocalSubnetMask = localSubmask; + if (!realm.ExternalAddress || *realm.ExternalAddress != address) + realm.ExternalAddress = Trinity::make_unique<boost::asio::ip::address>(address); + if (!realm.LocalAddress || *realm.LocalAddress != localAddr) + realm.LocalAddress = Trinity::make_unique<boost::asio::ip::address>(localAddr); + if (!realm.LocalSubnetMask || *realm.LocalSubnetMask != localSubmask) + realm.LocalSubnetMask = Trinity::make_unique<boost::asio::ip::address>(localSubmask); realm.Port = port; } @@ -110,7 +115,7 @@ void RealmList::UpdateRealms(boost::system::error_code const& error) continue; } - boost::asio::ip::address externalAddress = (*endPoint).endpoint().address(); + boost::asio::ip::address externalAddress = endPoint->endpoint().address(); boost::asio::ip::tcp::resolver::query localAddressQuery(boost::asio::ip::tcp::v4(), fields[3].GetString(), ""); endPoint = _resolver->resolve(localAddressQuery, ec); @@ -120,7 +125,7 @@ void RealmList::UpdateRealms(boost::system::error_code const& error) continue; } - boost::asio::ip::address localAddress = (*endPoint).endpoint().address(); + boost::asio::ip::address localAddress = endPoint->endpoint().address(); boost::asio::ip::tcp::resolver::query localSubmaskQuery(boost::asio::ip::tcp::v4(), fields[4].GetString(), ""); endPoint = _resolver->resolve(localSubmaskQuery, ec); @@ -130,7 +135,7 @@ void RealmList::UpdateRealms(boost::system::error_code const& error) continue; } - boost::asio::ip::address localSubmask = (*endPoint).endpoint().address(); + boost::asio::ip::address localSubmask = endPoint->endpoint().address(); uint16 port = fields[5].GetUInt16(); uint8 icon = fields[6].GetUInt8(); @@ -181,5 +186,5 @@ Realm const* RealmList::GetRealm(RealmHandle const& id) const if (itr != _realms.end()) return &itr->second; - return NULL; + return nullptr; } diff --git a/src/server/shared/Realm/RealmList.h b/src/server/shared/Realm/RealmList.h index 7878779b736..5d6d2c16151 100644 --- a/src/server/shared/Realm/RealmList.h +++ b/src/server/shared/Realm/RealmList.h @@ -19,12 +19,24 @@ #ifndef _REALMLIST_H #define _REALMLIST_H -#include "Common.h" -#include "Realm/Realm.h" -#include <boost/asio/ip/address.hpp> -#include <boost/asio/ip/tcp.hpp> -#include <boost/asio/io_service.hpp> -#include <boost/asio/deadline_timer.hpp> +#include "Define.h" +#include "Realm.h" +#include <map> +#include <vector> +#include <unordered_set> + +namespace boost +{ + namespace asio + { + class io_service; + } + + namespace system + { + class error_code; + } +} /// Storage object for the list of realms on the server class TC_SHARED_API RealmList @@ -46,13 +58,14 @@ private: RealmList(); void UpdateRealms(boost::system::error_code const& error); - void UpdateRealm(RealmHandle const& id, uint32 build, const std::string& name, boost::asio::ip::address const& address, boost::asio::ip::address const& localAddr, - boost::asio::ip::address const& localSubmask, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population); + void UpdateRealm(RealmHandle const& id, uint32 build, std::string const& name, + boost::asio::ip::address const& address, boost::asio::ip::address const& localAddr, boost::asio::ip::address const& localSubmask, + uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population); RealmMap _realms; uint32 _updateInterval; - boost::asio::deadline_timer* _updateTimer; - boost::asio::ip::tcp::resolver* _resolver; + std::unique_ptr<boost::asio::deadline_timer> _updateTimer; + std::unique_ptr<boost::asio::ip::tcp_resolver> _resolver; }; #define sRealmList RealmList::Instance() |