From 980f28d2ce099f524abdb6faed3fe59ce4c0963a Mon Sep 17 00:00:00 2001 From: DDuarte Date: Mon, 28 Mar 2016 02:02:29 +0100 Subject: Core/Network: Change SocketMgr.StartNetwork to take the thread count by arg instead of config AuthSocketMgr doesn't need "Network.Threads" config Fixes "Missing name Network.Threads in config file authserver.conf" Ref #16859 --- src/server/authserver/Server/AuthSocketMgr.h | 4 ++-- src/server/game/Server/WorldSocketMgr.cpp | 4 ++-- src/server/game/Server/WorldSocketMgr.h | 2 +- src/server/shared/Networking/SocketMgr.h | 12 +++--------- src/server/worldserver/Main.cpp | 10 +++++++++- 5 files changed, 17 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/server/authserver/Server/AuthSocketMgr.h b/src/server/authserver/Server/AuthSocketMgr.h index a16b7d405b9..9923f2b2f11 100644 --- a/src/server/authserver/Server/AuthSocketMgr.h +++ b/src/server/authserver/Server/AuthSocketMgr.h @@ -32,9 +32,9 @@ public: return instance; } - bool StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port) override + bool StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port, int threadCount = 1) override { - if (!BaseSocketMgr::StartNetwork(service, bindIp, port)) + if (!BaseSocketMgr::StartNetwork(service, bindIp, port, threadCount)) return false; _acceptor->AsyncAcceptWithCallback<&AuthSocketMgr::OnSocketAccept>(); diff --git a/src/server/game/Server/WorldSocketMgr.cpp b/src/server/game/Server/WorldSocketMgr.cpp index cbdb6a4a70b..2faf0704d4f 100644 --- a/src/server/game/Server/WorldSocketMgr.cpp +++ b/src/server/game/Server/WorldSocketMgr.cpp @@ -53,7 +53,7 @@ WorldSocketMgr& WorldSocketMgr::Instance() return instance; } -bool WorldSocketMgr::StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port) +bool WorldSocketMgr::StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port, int threadCount) { _tcpNoDelay = sConfigMgr->GetBoolDefault("Network.TcpNodelay", true); @@ -71,7 +71,7 @@ bool WorldSocketMgr::StartNetwork(boost::asio::io_service& service, std::string return false; } - BaseSocketMgr::StartNetwork(service, bindIp, port); + BaseSocketMgr::StartNetwork(service, bindIp, port, threadCount); _acceptor->SetSocketFactory(std::bind(&BaseSocketMgr::GetSocketForAccept, this)); diff --git a/src/server/game/Server/WorldSocketMgr.h b/src/server/game/Server/WorldSocketMgr.h index 0dcc30e8f70..a5aee344bf7 100644 --- a/src/server/game/Server/WorldSocketMgr.h +++ b/src/server/game/Server/WorldSocketMgr.h @@ -38,7 +38,7 @@ public: static WorldSocketMgr& Instance(); /// Start network, listen at address:port . - bool StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port) override; + bool StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port, int networkThreads) override; /// Stops all network threads, It will wait for all running threads . void StopNetwork() override; diff --git a/src/server/shared/Networking/SocketMgr.h b/src/server/shared/Networking/SocketMgr.h index b14aac4ca47..e479cd2450d 100644 --- a/src/server/shared/Networking/SocketMgr.h +++ b/src/server/shared/Networking/SocketMgr.h @@ -19,7 +19,6 @@ #define SocketMgr_h__ #include "AsyncAcceptor.h" -#include "Config.h" #include "Errors.h" #include "NetworkThread.h" #include @@ -36,15 +35,9 @@ public: ASSERT(!_threads && !_acceptor && !_threadCount, "StopNetwork must be called prior to SocketMgr destruction"); } - virtual bool StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port) + virtual bool StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port, int threadCount) { - _threadCount = sConfigMgr->GetIntDefault("Network.Threads", 1); - - if (_threadCount <= 0) - { - TC_LOG_ERROR("misc", "Network.Threads is wrong in your config file"); - return false; - } + ASSERT(threadCount > 0); try { @@ -56,6 +49,7 @@ public: return false; } + _threadCount = threadCount; _threads = CreateThreads(); ASSERT(_threads); diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 229375c4e51..a81401bf7b8 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -222,7 +222,15 @@ extern int main(int argc, char** argv) uint16 worldPort = uint16(sWorld->getIntConfig(CONFIG_PORT_WORLD)); std::string worldListener = sConfigMgr->GetStringDefault("BindIP", "0.0.0.0"); - sWorldSocketMgr.StartNetwork(_ioService, worldListener, worldPort); + int networkThreads = sConfigMgr->GetIntDefault("Network.Threads", 1); + + if (networkThreads <= 0) + { + TC_LOG_ERROR("server.worldserver", "Network.Threads cannot be less than 0"); + return false; + } + + sWorldSocketMgr.StartNetwork(_ioService, worldListener, worldPort, networkThreads); // Set server online (allow connecting now) LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = flag & ~%u, population = 0 WHERE id = '%u'", REALM_FLAG_OFFLINE, realm.Id.Realm); -- cgit v1.2.3