From 50457f28fa7567b81ccf6a423e09312d5587cfbc Mon Sep 17 00:00:00 2001
From: znone <glyc@sina.com.cn>
Date: Fri, 04 Dec 2020 14:40:30 +0000
Subject: [PATCH] ODBC database can be accessed asynchronously.

---
 include/qtl_async.hpp |   34 +++++++++++++++++-----------------
 1 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/include/qtl_async.hpp b/include/qtl_async.hpp
index 7505425..ec877ea 100644
--- a/include/qtl_async.hpp
+++ b/include/qtl_async.hpp
@@ -157,7 +157,7 @@
 		Note: parameter affected must has default value.
 	*/
 	template<typename Params, typename ResultHandler>
-	void execute(ResultHandler&& handler, const char* query_text, size_t text_length, const Params& params)
+	void execute(ResultHandler handler, const char* query_text, size_t text_length, const Params& params)
 	{
 		T* pThis = static_cast<T*>(this);
 		pThis->open_command(query_text, text_length, [handler, params](const typename T::exception_type& e, std::shared_ptr<Command>& command) mutable {
@@ -186,30 +186,30 @@
 		});
 	}
 	template<typename Params, typename ResultHandler>
-	void execute(ResultHandler&& handler, const char* query_text, const Params& params, uint64_t* affected = NULL)
+	void execute(ResultHandler handler, const char* query_text, const Params& params)
 	{
-		return execute(handler, query_text, strlen(query_text), params, affected);
+		return execute(std::forward<ResultHandler>(handler), query_text, strlen(query_text), params);
 	}
 	template<typename Params, typename ResultHandler>
-	void execute(ResultHandler&& handler, const std::string& query_text, const Params& params, uint64_t* affected = NULL)
+	void execute(ResultHandler handler, const std::string& query_text, const Params& params)
 	{
-		return execute(handler, query_text.data(), query_text.length(), params, affected);
+		return execute(std::forward<ResultHandler>(handler), query_text.data(), query_text.length(), params);
 	}
 
 	template<typename... Params, typename ResultHandler>
-	void execute_direct(ResultHandler&& handler, const char* query_text, size_t text_length, uint64_t* affected, const Params&... params)
+	void execute_direct(ResultHandler handler, const char* query_text, size_t text_length, const Params&... params)
 	{
-		execute(handler, query_text, text_length, std::forward_as_tuple(params...), affected);
+		execute(std::forward<ResultHandler>(handler), query_text, text_length, std::forward_as_tuple(params...));
 	}
 	template<typename... Params, typename ResultHandler>
-	void execute_direct(ResultHandler&& handler, const char* query_text, uint64_t* affected, const Params&... params)
+	void execute_direct(ResultHandler handler, const char* query_text, const Params&... params)
 	{
-		execute(handler, query_text, std::forward_as_tuple(params...), affected);
+		execute(std::forward<ResultHandler>(handler), query_text, std::forward_as_tuple(params...));
 	}
 	template<typename... Params, typename ResultHandler>
-	void execute_direct(ResultHandler&& handler, const std::string& query_text, uint64_t* affected, const Params&... params)
+	void execute_direct(ResultHandler handler, const std::string& query_text, const Params&... params)
 	{
-		execute(handler, query_text, query_text, std::forward_as_tuple(params...), affected);
+		execute(std::forward<ResultHandler>(handler), query_text, query_text, std::forward_as_tuple(params...));
 	}
 
 	/*
@@ -221,7 +221,7 @@
 		Note: parameter insert_id must has default value.
 	*/
 	template<typename Params, typename ResultHandler>
-	void insert(ResultHandler&& handler, const char* query_text, size_t text_length, const Params& params)
+	void insert(ResultHandler handler, const char* query_text, size_t text_length, const Params& params)
 	{
 		T* pThis = static_cast<T*>(this);
 		pThis->open_command(query_text, text_length, [handler, params](const typename T::exception_type& e, std::shared_ptr<Command>& command) {
@@ -255,31 +255,31 @@
 	template<typename Params, typename ResultHandler>
 	void insert(ResultHandler&& handler, const char* query_text, const Params& params)
 	{
-		insert(handler, query_text, strlen(query_text), params);
+		insert(std::forward<ResultHandler>(handler), query_text, strlen(query_text), params);
 	}
 
 	template<typename Params, typename ResultHandler>
 	void insert(ResultHandler&& handler, const std::string& query_text, const Params& params)
 	{
-		insert(handler, query_text.data(), query_text.length(), params);
+		insert(std::forward<ResultHandler>(handler), query_text.data(), query_text.length(), params);
 	}
 
 	template<typename... Params, typename ResultHandler>
 	void insert_direct(ResultHandler&& handler, const char* query_text, size_t text_length, const Params&... params)
 	{
-		insert(handler, query_text, text_length, std::forward_as_tuple(params...));
+		insert(std::forward<ResultHandler>(handler), query_text, text_length, std::forward_as_tuple(params...));
 	}
 
 	template<typename... Params, typename ResultHandler>
 	void insert_direct(ResultHandler&& handler, const char* query_text, const Params&... params)
 	{
-		insert(handler, query_text, strlen(query_text), std::forward_as_tuple(params...));
+		insert(std::forward<ResultHandler>(handler), query_text, strlen(query_text), std::forward_as_tuple(params...));
 	}
 
 	template<typename... Params, typename ResultHandler>
 	void insert_direct(ResultHandler&& handler, const std::string& query_text, const Params&... params)
 	{
-		insert(handler, query_text.data(), query_text.length(), std::forward_as_tuple(params...));
+		insert(std::forward<ResultHandler>(handler), query_text.data(), query_text.length(), std::forward_as_tuple(params...));
 	}
 
 	/*

--
Gitblit v1.9.3