aboutsummaryrefslogtreecommitdiff
path: root/src/server/bnetserver
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/bnetserver')
-rw-r--r--src/server/bnetserver/Server/Session.cpp11
-rw-r--r--src/server/bnetserver/Server/Session.h6
2 files changed, 6 insertions, 11 deletions
diff --git a/src/server/bnetserver/Server/Session.cpp b/src/server/bnetserver/Server/Session.cpp
index 44c6122b2c6..7fe1c4ef865 100644
--- a/src/server/bnetserver/Server/Session.cpp
+++ b/src/server/bnetserver/Server/Session.cpp
@@ -19,6 +19,7 @@
#include "BattlenetRpcErrorCodes.h"
#include "ByteConverter.h"
#include "Database/DatabaseEnv.h"
+#include "QueryCallback.h"
#include "LoginRESTService.h"
#include "ProtobufJSON.h"
#include "RealmList.h"
@@ -91,8 +92,7 @@ void Battlenet::Session::Start()
stmt->setString(0, ip_address);
stmt->setUInt32(1, inet_addr(ip_address.c_str()));
- _queryCallback = std::bind(&Battlenet::Session::CheckIpCallback, this, std::placeholders::_1);
- _queryFuture = LoginDatabase.AsyncQuery(stmt);
+ _queryProcessor.AddQuery(LoginDatabase.AsyncQuery(stmt).WithPreparedCallback(std::bind(&Battlenet::Session::CheckIpCallback, this, std::placeholders::_1)));
}
void Battlenet::Session::CheckIpCallback(PreparedQueryResult result)
@@ -127,12 +127,7 @@ bool Battlenet::Session::Update()
if (!BattlenetSocket::Update())
return false;
- if (_queryFuture.valid() && _queryFuture.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
- {
- auto callback = std::move(_queryCallback);
- _queryCallback = nullptr;
- callback(_queryFuture.get());
- }
+ _queryProcessor.ProcessReadyQueries();
return true;
}
diff --git a/src/server/bnetserver/Server/Session.h b/src/server/bnetserver/Server/Session.h
index 7a8ab6ea55f..99a0ec088a1 100644
--- a/src/server/bnetserver/Server/Session.h
+++ b/src/server/bnetserver/Server/Session.h
@@ -23,7 +23,8 @@
#include "SslSocket.h"
#include "Socket.h"
#include "BigNumber.h"
-#include "QueryCallback.h"
+#include "QueryResult.h"
+#include "QueryCallbackProcessor.h"
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/ssl.hpp>
#include <google/protobuf/message.h>
@@ -188,8 +189,7 @@ namespace Battlenet
bool _authed;
- PreparedQueryResultFuture _queryFuture;
- std::function<void(PreparedQueryResult)> _queryCallback;
+ QueryCallbackProcessor _queryProcessor;
std::unordered_map<uint32, std::function<void(MessageBuffer)>> _responseCallbacks;
uint32 _requestToken;