aboutsummaryrefslogtreecommitdiff
path: root/src/server/worldserver/Main.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-05-13 11:49:09 +0200
committerShauren <shauren.trinity@gmail.com>2017-05-13 11:49:09 +0200
commitbeb3316089b350a43e917d896e682298df8dcfc0 (patch)
tree8006c52594009f226d834991d101c97057699594 /src/server/worldserver/Main.cpp
parentc00316d3d4b57826cc8e38feed24faf84832c04b (diff)
Core/Shared: Include cleanup
Diffstat (limited to 'src/server/worldserver/Main.cpp')
-rw-r--r--src/server/worldserver/Main.cpp71
1 files changed, 20 insertions, 51 deletions
diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp
index 12a8631f324..08cb7cd58c9 100644
--- a/src/server/worldserver/Main.cpp
+++ b/src/server/worldserver/Main.cpp
@@ -52,9 +52,11 @@
#include <openssl/crypto.h>
#include <boost/asio/io_service.hpp>
#include <boost/asio/deadline_timer.hpp>
+#include <boost/asio/signal_set.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/program_options.hpp>
#include <google/protobuf/stubs/common.h>
+#include <csignal>
using namespace boost::program_options;
namespace fs = boost::filesystem;
@@ -107,7 +109,7 @@ void StopDB();
void WorldUpdateLoop();
void ClearOnlineAccounts();
void ShutdownCLIThread(std::thread* cliThread);
-bool LoadRealmInfo(boost::asio::io_service& ioService);
+bool LoadRealmInfo();
variables_map GetConsoleArguments(int argc, char** argv, fs::path& configFile, std::string& cfg_service);
/// Launch the Trinity server
@@ -226,7 +228,7 @@ extern int main(int argc, char** argv)
std::shared_ptr<void> sRealmListHandle(nullptr, [](void*) { sRealmList->Close(); });
- LoadRealmInfo(*ioService);
+ LoadRealmInfo();
sMetric->Initialize(realm.Name, *ioService, []()
{
@@ -509,59 +511,26 @@ AsyncAcceptor* StartRaSocketAcceptor(boost::asio::io_service& ioService)
return acceptor;
}
-bool LoadRealmInfo(boost::asio::io_service& ioService)
+bool LoadRealmInfo()
{
- boost::asio::ip::tcp::resolver resolver(ioService);
- boost::asio::ip::tcp::resolver::iterator end;
-
- QueryResult result = LoginDatabase.PQuery("SELECT id, name, address, localAddress, localSubnetMask, port, icon, flag, timezone, allowedSecurityLevel, population, gamebuild, Region, Battlegroup FROM realmlist WHERE id = %u", realm.Id.Realm);
- if (!result)
- return false;
-
- Field* fields = result->Fetch();
- realm.Name = fields[1].GetString();
- boost::asio::ip::tcp::resolver::query externalAddressQuery(ip::tcp::v4(), fields[2].GetString(), "");
-
- boost::system::error_code ec;
- boost::asio::ip::tcp::resolver::iterator endPoint = resolver.resolve(externalAddressQuery, ec);
- if (endPoint == end || ec)
- {
- TC_LOG_ERROR("server.worldserver", "Could not resolve address %s", fields[2].GetString().c_str());
- return false;
- }
-
- realm.ExternalAddress = (*endPoint).endpoint().address();
-
- boost::asio::ip::tcp::resolver::query localAddressQuery(ip::tcp::v4(), fields[3].GetString(), "");
- endPoint = resolver.resolve(localAddressQuery, ec);
- if (endPoint == end || ec)
- {
- TC_LOG_ERROR("server.worldserver", "Could not resolve address %s", fields[3].GetString().c_str());
- return false;
- }
-
- realm.LocalAddress = (*endPoint).endpoint().address();
-
- boost::asio::ip::tcp::resolver::query localSubmaskQuery(ip::tcp::v4(), fields[4].GetString(), "");
- endPoint = resolver.resolve(localSubmaskQuery, ec);
- if (endPoint == end || ec)
+ if (Realm const* realmListRealm = sRealmList->GetRealm(realm.Id))
{
- TC_LOG_ERROR("server.worldserver", "Could not resolve address %s", fields[4].GetString().c_str());
- return false;
+ realm.Id = realmListRealm->Id;
+ realm.Build = realmListRealm->Build;
+ realm.ExternalAddress = Trinity::make_unique<boost::asio::ip::address>(*realmListRealm->ExternalAddress);
+ realm.LocalAddress = Trinity::make_unique<boost::asio::ip::address>(*realmListRealm->LocalAddress);
+ realm.LocalSubnetMask = Trinity::make_unique<boost::asio::ip::address>(*realmListRealm->LocalSubnetMask);
+ realm.Port = realmListRealm->Port;
+ realm.Name = realmListRealm->Name;
+ realm.Type = realmListRealm->Type;
+ realm.Flags = realmListRealm->Flags;
+ realm.Timezone = realmListRealm->Timezone;
+ realm.AllowedSecurityLevel = realmListRealm->AllowedSecurityLevel;
+ realm.PopulationLevel = realmListRealm->PopulationLevel;
+ return true;
}
- realm.LocalSubnetMask = (*endPoint).endpoint().address();
-
- realm.Port = fields[5].GetUInt16();
- realm.Type = fields[6].GetUInt8();
- realm.Flags = RealmFlags(fields[7].GetUInt8());
- realm.Timezone = fields[8].GetUInt8();
- realm.AllowedSecurityLevel = AccountTypes(fields[9].GetUInt8());
- realm.PopulationLevel = fields[10].GetFloat();
- realm.Id.Region = fields[12].GetUInt8();
- realm.Id.Site = fields[13].GetUInt8();
- realm.Build = fields[11].GetUInt32();
- return true;
+ return false;
}
/// Initialize connection to the databases