diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-06-12 23:39:27 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-06-12 23:39:27 +0200 |
commit | 2b4c7dec2979b1327d6e1ea5fefdf3deb7c3bcd8 (patch) | |
tree | ee1d6222db9b32dafbd83f88405fe5f4a4772886 /src/server/database/Database/QueryCallback.h | |
parent | 7fcb126fcb7cff945936a7f5e051b07ce0de8a7f (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.h | 14 |
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; }; |