From e8b2be3527c7683e8bfca70ed7706fc20da566fd Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 8 Apr 2025 19:15:16 +0200 Subject: Core/Network: Socket refactors * Devirtualize calls to Read and Update by marking concrete implementations as final * Removed derived class template argument * Specialize boost::asio::basic_stream_socket for boost::asio::io_context instead of type-erased any_io_executor * Make socket initialization easier composable (before entering Read loop) * Remove use of deprecated boost::asio::null_buffers and boost::beast::ssl_stream --- src/server/worldserver/RemoteAccess/RASession.cpp | 4 +++- src/server/worldserver/RemoteAccess/RASession.h | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src/server/worldserver/RemoteAccess') diff --git a/src/server/worldserver/RemoteAccess/RASession.cpp b/src/server/worldserver/RemoteAccess/RASession.cpp index b4e9e6317be..910cfdf5e4f 100644 --- a/src/server/worldserver/RemoteAccess/RASession.cpp +++ b/src/server/worldserver/RemoteAccess/RASession.cpp @@ -29,9 +29,11 @@ void RASession::Start() { + _socket.non_blocking(false); + // wait 1 second for active connections to send negotiation request for (int counter = 0; counter < 10 && _socket.available() == 0; counter++) - std::this_thread::sleep_for(std::chrono::milliseconds(100)); + std::this_thread::sleep_for(100ms); // Check if there are bytes available, if they are, then the client is requesting the negotiation if (_socket.available() > 0) diff --git a/src/server/worldserver/RemoteAccess/RASession.h b/src/server/worldserver/RemoteAccess/RASession.h index e0f4b373f74..23fd4e70c55 100644 --- a/src/server/worldserver/RemoteAccess/RASession.h +++ b/src/server/worldserver/RemoteAccess/RASession.h @@ -15,10 +15,11 @@ * with this program. If not, see . */ -#ifndef __RASESSION_H__ -#define __RASESSION_H__ +#ifndef TRINITYCORE_RA_SESSION_H +#define TRINITYCORE_RA_SESSION_H #include "Define.h" +#include "Socket.h" #include #include #include @@ -29,7 +30,7 @@ const size_t bufferSize = 4096; class RASession : public std::enable_shared_from_this { public: - RASession(boost::asio::ip::tcp::socket&& socket) : _socket(std::move(socket)), _commandExecuting(nullptr) + RASession(Trinity::Net::IoContextTcpSocket&& socket) : _socket(std::move(socket)), _commandExecuting(nullptr) { } @@ -47,7 +48,7 @@ private: static void CommandPrint(void* callbackArg, std::string_view text); static void CommandFinished(void* callbackArg, bool); - boost::asio::ip::tcp::socket _socket; + Trinity::Net::IoContextTcpSocket _socket; boost::asio::streambuf _readBuffer; boost::asio::streambuf _writeBuffer; std::promise* _commandExecuting; -- cgit v1.2.3