mirror of
https://github.com/boostorg/mysql.git
synced 2026-02-14 00:42:53 +00:00
Added async API for prepared statements
This commit is contained in:
@@ -124,6 +124,9 @@ public:
|
||||
|
||||
prepared_statement<Stream> prepare_statement(std::string_view statement, error_code&, error_info&);
|
||||
prepared_statement<Stream> prepare_statement(std::string_view statement);
|
||||
|
||||
template <typename CompletionToken>
|
||||
auto async_prepare_statement(std::string_view statement, CompletionToken&& token);
|
||||
};
|
||||
|
||||
/// A connection to MySQL over TCP.
|
||||
|
||||
@@ -145,5 +145,15 @@ mysql::prepared_statement<Stream> mysql::connection<Stream>::prepare_statement(
|
||||
return res;
|
||||
}
|
||||
|
||||
template <typename Stream>
|
||||
template <typename CompletionToken>
|
||||
auto mysql::connection<Stream>::async_prepare_statement(
|
||||
std::string_view statement,
|
||||
CompletionToken&& token
|
||||
)
|
||||
{
|
||||
return detail::async_prepare_statement(channel_, statement, std::forward<CompletionToken>(token));
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -56,4 +56,24 @@ mysql::resultset<Stream> mysql::prepared_statement<Stream>::execute(
|
||||
return res;
|
||||
}
|
||||
|
||||
template <typename StreamType>
|
||||
template <typename ForwardIterator, typename CompletionToken>
|
||||
auto mysql::prepared_statement<StreamType>::async_execute(
|
||||
ForwardIterator params_first,
|
||||
ForwardIterator params_last,
|
||||
CompletionToken&& token
|
||||
) const
|
||||
{
|
||||
// TODO: actually return an error message here instead of crashing
|
||||
assert(std::distance(params_first, params_last) == num_params());
|
||||
return detail::async_execute_statement(
|
||||
*channel_,
|
||||
stmt_msg_.statement_id.value,
|
||||
params_first,
|
||||
params_last,
|
||||
std::forward<CompletionToken>(token)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
#endif /* INCLUDE_MYSQL_IMPL_PREPARED_STATEMENT_IPP_ */
|
||||
|
||||
@@ -37,6 +37,12 @@ public:
|
||||
return execute(std::begin(params), std::end(params));
|
||||
}
|
||||
|
||||
template <typename Collection, typename CompletionToken>
|
||||
auto async_execute(const Collection& params, CompletionToken&& token) const
|
||||
{
|
||||
return async_execute(std::begin(params), std::end(params), std::forward<CompletionToken>(token));
|
||||
}
|
||||
|
||||
|
||||
template <typename ForwardIterator>
|
||||
resultset<Stream> execute(ForwardIterator params_first, ForwardIterator params_last, error_code&, error_info&) const;
|
||||
@@ -44,6 +50,9 @@ public:
|
||||
|
||||
template <typename ForwardIterator>
|
||||
resultset<Stream> execute(ForwardIterator params_first, ForwardIterator params_last) const;
|
||||
|
||||
template <typename ForwardIterator, typename CompletionToken>
|
||||
auto async_execute(ForwardIterator params_first, ForwardIterator params_last, CompletionToken&& token) const;
|
||||
};
|
||||
|
||||
using tcp_prepared_statement = prepared_statement<boost::asio::ip::tcp::socket>;
|
||||
|
||||
Reference in New Issue
Block a user