diff options
author | DDuarte <dnpd.dd@gmail.com> | 2016-03-28 02:02:29 +0100 |
---|---|---|
committer | DDuarte <dnpd.dd@gmail.com> | 2016-03-28 02:02:29 +0100 |
commit | 980f28d2ce099f524abdb6faed3fe59ce4c0963a (patch) | |
tree | 7353c04f6773901452c6e604cbf899d8f791627e /src | |
parent | 6487e2f2d6a1ddbeff77362219658376b8a3f9f0 (diff) |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/server/authserver/Server/AuthSocketMgr.h | 4 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocketMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocketMgr.h | 2 | ||||
-rw-r--r-- | src/server/shared/Networking/SocketMgr.h | 12 | ||||
-rw-r--r-- | src/server/worldserver/Main.cpp | 10 |
5 files changed, 17 insertions, 15 deletions
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 <boost/asio/ip/tcp.hpp> @@ -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); |