23#include <boost/system/error_code.hpp>
27 sWorldSocketMgr.OnSocketOpen(std::forward<boost::asio::ip::tcp::socket>(sock), threadIndex);
35 sock->SetSendBufferSize(
sWorldSocketMgr.GetApplicationSendBufferSize());
65 TC_LOG_DEBUG(
"misc",
"Max allowed socket connections {}", max_connections);
74 TC_LOG_ERROR(
"misc",
"Network.OutUBuff is wrong in your config file");
84 instanceAcceptor =
new AsyncAcceptor(ioContext, bindIp, instancePort);
86 catch (boost::system::system_error
const& err)
88 TC_LOG_ERROR(
"network",
"Exception caught in WorldSocketMgr::StartNetwork ({}:{}): {}", bindIp, port, err.what());
92 if (!instanceAcceptor->
Bind())
94 TC_LOG_ERROR(
"network",
"StartNetwork failed to bind instance socket acceptor");
95 delete instanceAcceptor;
128 boost::system::error_code err;
130 if (err && err != boost::system::errc::not_supported)
132 TC_LOG_ERROR(
"misc",
"WorldSocketMgr::OnSocketOpen sock.set_option(boost::asio::socket_base::send_buffer_size) err = {}", err.message());
140 boost::system::error_code err;
141 sock.set_option(boost::asio::ip::tcp::no_delay(
true), err);
144 TC_LOG_ERROR(
"misc",
"WorldSocketMgr::OnSocketOpen sock.set_option(boost::asio::ip::tcp::no_delay) err = {}", err.message());
#define TRINITY_MAX_LISTEN_CONNECTIONS
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
static void OnSocketAccept(boost::asio::ip::tcp::socket &&sock, uint32 threadIndex)
void SetSocketFactory(std::function< std::pair< boost::asio::ip::tcp::socket *, uint32 >()> func)
void AsyncAcceptWithCallback()
AsyncAcceptor * _acceptor
virtual bool StartNetwork(Trinity::Asio::IoContext &ioContext, std::string const &bindIp, uint16 port, int threadCount)
virtual void OnSocketOpen(boost::asio::ip::tcp::socket &&sock, uint32 threadIndex)
virtual void StopNetwork()
std::pair< boost::asio::ip::tcp::socket *, uint32 > GetSocketForAccept()
int32 GetNetworkThreadCount() const
Manages all sockets connected to peers and network threads.
int32 _socketSystemSendBufferSize
NetworkThread< WorldSocket > * CreateThreads() const override
AsyncAcceptor * _instanceAcceptor
int32 _socketApplicationSendBufferSize
bool StartWorldNetwork(Trinity::Asio::IoContext &ioContext, std::string const &bindIp, uint16 port, uint16 instancePort, int networkThreads)
Start network, listen at address:port .
static WorldSocketMgr & Instance()
void OnSocketOpen(boost::asio::ip::tcp::socket &&sock, uint32 threadIndex) override
void StopNetwork() override
Stops all network threads, It will wait for all running threads .
void SocketRemoved(std::shared_ptr< WorldSocket > sock) override
void SocketAdded(std::shared_ptr< WorldSocket > sock) override