mirror of
https://github.com/boostorg/mysql.git
synced 2026-02-14 00:42:53 +00:00
Added async_execute_statement
This commit is contained in:
@@ -21,6 +21,16 @@ void execute_statement(
|
||||
error_info& info
|
||||
);
|
||||
|
||||
template <typename StreamType, typename ForwardIterator, typename CompletionToken>
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, void(error_code, error_info, resultset<StreamType>))
|
||||
async_execute_statement(
|
||||
channel<StreamType>& chan,
|
||||
std::uint32_t statement_id,
|
||||
ForwardIterator params_begin,
|
||||
ForwardIterator params_end,
|
||||
CompletionToken&& token
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,31 @@
|
||||
#include "mysql/impl/network_algorithms/execute_generic.hpp"
|
||||
#include "mysql/impl/binary_deserialization.hpp"
|
||||
|
||||
namespace mysql
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
|
||||
template <typename ForwardIterator>
|
||||
com_stmt_execute_packet<ForwardIterator> make_stmt_execute_packet(
|
||||
std::uint32_t statement_id,
|
||||
ForwardIterator params_begin,
|
||||
ForwardIterator params_end
|
||||
)
|
||||
{
|
||||
return com_stmt_execute_packet<ForwardIterator> {
|
||||
int4(statement_id),
|
||||
int1(0), // flags
|
||||
int4(1), // iteration count
|
||||
int1(1), // new params flag: set
|
||||
params_begin,
|
||||
params_end
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
template <typename StreamType, typename ForwardIterator>
|
||||
void mysql::detail::execute_statement(
|
||||
channel<StreamType>& chan,
|
||||
@@ -15,20 +40,27 @@ void mysql::detail::execute_statement(
|
||||
error_info& info
|
||||
)
|
||||
{
|
||||
// Compose statement execute message
|
||||
com_stmt_execute_packet<ForwardIterator> request {
|
||||
int4(statement_id),
|
||||
int1(0), // flags
|
||||
int4(1), // iteration count
|
||||
int1(1), // new params flag: set
|
||||
params_begin,
|
||||
params_end
|
||||
};
|
||||
auto request = make_stmt_execute_packet(statement_id, params_begin, params_end);
|
||||
execute_generic(&deserialize_binary_row, chan, request, output, err, info);
|
||||
}
|
||||
|
||||
template <typename StreamType, typename ForwardIterator, typename CompletionToken>
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(
|
||||
CompletionToken,
|
||||
void(mysql::error_code, mysql::error_info, mysql::resultset<StreamType>)
|
||||
)
|
||||
mysql::detail::async_execute_statement(
|
||||
channel<StreamType>& chan,
|
||||
std::uint32_t statement_id,
|
||||
ForwardIterator params_begin,
|
||||
ForwardIterator params_end,
|
||||
CompletionToken&& token
|
||||
)
|
||||
{
|
||||
auto request = make_stmt_execute_packet(statement_id, params_begin, params_end);
|
||||
return async_execute_generic(&deserialize_binary_row, chan, request, std::forward<CompletionToken>(token));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* INCLUDE_MYSQL_IMPL_NETWORK_ALGORITHMS_EXECUTE_STATEMENT_IPP_ */
|
||||
|
||||
Reference in New Issue
Block a user