From 73e61fa652d1233bfff1db91fa2bca8c317c8caf Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 12 Jan 2017 19:40:33 +0100 Subject: Core/DBLayer: Refine new query callback for chaining --- src/server/database/Database/QueryCallback.h | 36 ++++++++-------------------- 1 file changed, 10 insertions(+), 26 deletions(-) (limited to 'src/server/database/Database/QueryCallback.h') diff --git a/src/server/database/Database/QueryCallback.h b/src/server/database/Database/QueryCallback.h index a0aa69ee952..6c4a8a81b4e 100644 --- a/src/server/database/Database/QueryCallback.h +++ b/src/server/database/Database/QueryCallback.h @@ -30,28 +30,6 @@ typedef std::promise PreparedQueryResultPromise; class TC_DATABASE_API QueryCallbackNew { - struct String - { - explicit String(std::future&& result) : Result(std::move(result)) { } - String(String&&) = default; - String& operator=(String&&) = default; - ~String() { } - - std::future Result; - std::function Callback; - }; - - struct Prepared - { - explicit Prepared(std::future&& result) : Result(std::move(result)) { } - Prepared(Prepared&&) = default; - Prepared& operator=(Prepared&&) = default; - ~Prepared() { } - - std::future Result; - std::function Callback; - }; - public: explicit QueryCallbackNew(std::future&& result); explicit QueryCallbackNew(std::future&& result); @@ -72,15 +50,21 @@ public: Status InvokeIfReady(); private: - void MoveFrom(QueryCallbackNew&& other); - void DestroyCurrentMember(); + QueryCallbackNew(QueryCallbackNew const& right) = delete; + QueryCallbackNew& operator=(QueryCallbackNew const& right) = delete; + + template friend void MoveFrom(T& to, T&& from); + template friend void DestroyActiveMember(T& obj); union { - String _string; - Prepared _prepared; + std::future _string; + std::future _prepared; }; bool _isPrepared; + + struct QueryCallbackData; + std::queue> _callbacks; }; template -- cgit v1.2.3