Core/Database: Rewrite QueryCallback with std::variant

This commit is contained in:
Shauren
2024-06-12 23:39:27 +02:00
parent 7fcb126fcb
commit 2b4c7dec29
2 changed files with 23 additions and 145 deletions

View File

@@ -24,6 +24,7 @@
#include <future>
#include <list>
#include <queue>
#include <variant>
class TC_DATABASE_API QueryCallback
{
@@ -50,18 +51,9 @@ private:
QueryCallback(QueryCallback const& right) = delete;
QueryCallback& operator=(QueryCallback const& right) = delete;
template<typename T> friend void ConstructActiveMember(T* obj);
template<typename T> friend void DestroyActiveMember(T* obj);
template<typename T> friend void MoveFrom(T* to, T&& from);
std::variant<std::future<QueryResult>, std::future<PreparedQueryResult>> _query;
union
{
std::future<QueryResult> _string;
std::future<PreparedQueryResult> _prepared;
};
bool _isPrepared;
struct QueryCallbackData;
using QueryCallbackData = std::variant<std::function<void(QueryCallback&, QueryResult)>, std::function<void(QueryCallback&, PreparedQueryResult)>>;
std::queue<QueryCallbackData, std::list<QueryCallbackData>> _callbacks;
};