From 71b681bbf0f5189cd87a6cea66ef51667223f54a Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 9 Apr 2025 21:02:31 +0200 Subject: Core/Network: Move to separate project --- src/server/bnetserver/REST/LoginHttpSession.cpp | 18 +++++++++++++++++- src/server/bnetserver/REST/LoginHttpSession.h | 8 ++++++-- src/server/bnetserver/REST/LoginRESTService.cpp | 2 +- 3 files changed, 24 insertions(+), 4 deletions(-) (limited to 'src/server/bnetserver/REST') diff --git a/src/server/bnetserver/REST/LoginHttpSession.cpp b/src/server/bnetserver/REST/LoginHttpSession.cpp index 23a317d3726..bd8afdbcf2f 100644 --- a/src/server/bnetserver/REST/LoginHttpSession.cpp +++ b/src/server/bnetserver/REST/LoginHttpSession.cpp @@ -83,7 +83,7 @@ public: // build initializer chain boost::container::static_vector, 4> initializers; - initializers.stable_emplace_back(std::make_shared>(this)); + initializers.stable_emplace_back(std::make_shared>(&_owner)); if constexpr (std::is_same_v) initializers.stable_emplace_back(std::make_shared>(this)); @@ -124,10 +124,26 @@ LoginHttpSession::LoginHttpSession(Trinity::Net::IoContextTcpSocket&& socket) { } +LoginHttpSession::~LoginHttpSession() = default; + void LoginHttpSession::Start() { TC_LOG_TRACE("server.http.session", "{} Accepted connection", GetClientInfo()); return _socket->Start(); } + +bool LoginHttpSession::Update() +{ + if (!_socket->Update()) + return false; + + _queryProcessor.ProcessReadyCallbacks(); + return true; +} + +void LoginHttpSession::QueueQuery(QueryCallback&& queryCallback) +{ + _queryProcessor.AddCallback(std::move(queryCallback)); +} } diff --git a/src/server/bnetserver/REST/LoginHttpSession.h b/src/server/bnetserver/REST/LoginHttpSession.h index c15442f9e0c..9690b02f14a 100644 --- a/src/server/bnetserver/REST/LoginHttpSession.h +++ b/src/server/bnetserver/REST/LoginHttpSession.h @@ -18,7 +18,9 @@ #ifndef TRINITYCORE_LOGIN_HTTP_SESSION_H #define TRINITYCORE_LOGIN_HTTP_SESSION_H +#include "AsyncCallbackProcessor.h" #include "BaseHttpSocket.h" +#include "DatabaseEnvFwd.h" #include "SRP6.h" namespace Battlenet @@ -34,20 +36,22 @@ public: static constexpr std::string_view SESSION_ID_COOKIE = "JSESSIONID="; explicit LoginHttpSession(Trinity::Net::IoContextTcpSocket&& socket); + ~LoginHttpSession(); void Start() override; - bool Update() override { return _socket->Update(); } + bool Update() override; boost::asio::ip::address const& GetRemoteIpAddress() const override { return _socket->GetRemoteIpAddress(); } bool IsOpen() const override { return _socket->IsOpen(); } void CloseSocket() override { return _socket->CloseSocket(); } void SendResponse(Trinity::Net::Http::RequestContext& context) override { return _socket->SendResponse(context); } - void QueueQuery(QueryCallback&& queryCallback) override { return _socket->QueueQuery(std::move(queryCallback)); } + void QueueQuery(QueryCallback&& queryCallback); std::string GetClientInfo() const override { return _socket->GetClientInfo(); } LoginSessionState* GetSessionState() const override { return static_cast(_socket->GetSessionState()); } private: std::shared_ptr _socket; + QueryCallbackProcessor _queryProcessor; }; } diff --git a/src/server/bnetserver/REST/LoginRESTService.cpp b/src/server/bnetserver/REST/LoginRESTService.cpp index 1afcc5c88bb..2cb804b4307 100644 --- a/src/server/bnetserver/REST/LoginRESTService.cpp +++ b/src/server/bnetserver/REST/LoginRESTService.cpp @@ -80,7 +80,7 @@ bool LoginRESTService::StartNetwork(Trinity::Asio::IoContext& ioContext, std::st using namespace std::string_literals; std::array configKeys = { { "LoginREST.ExternalAddress"s, "LoginREST.LocalAddress"s } }; - Trinity::Asio::Resolver resolver(ioContext); + Trinity::Net::Resolver resolver(ioContext); for (std::size_t i = 0; i < _hostnames.size(); ++i) { -- cgit v1.2.3