aboutsummaryrefslogtreecommitdiff
path: root/src/server/database/Database/QueryCallback.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-06-12 23:39:27 +0200
committerShauren <shauren.trinity@gmail.com>2024-06-12 23:39:27 +0200
commit2b4c7dec2979b1327d6e1ea5fefdf3deb7c3bcd8 (patch)
treeee1d6222db9b32dafbd83f88405fe5f4a4772886 /src/server/database/Database/QueryCallback.h
parent7fcb126fcb7cff945936a7f5e051b07ce0de8a7f (diff)
Core/Database: Rewrite QueryCallback with std::variant
Diffstat (limited to 'src/server/database/Database/QueryCallback.h')
-rw-r--r--src/server/database/Database/QueryCallback.h14
1 files changed, 3 insertions, 11 deletions
diff --git a/src/server/database/Database/QueryCallback.h b/src/server/database/Database/QueryCallback.h
index bb3cc64559d..72b4ca1202a 100644
--- a/src/server/database/Database/QueryCallback.h
+++ b/src/server/database/Database/QueryCallback.h
@@ -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;
};