OZO 「お象」
Boost.Asio and libpq based asynchronous PostgreSQL unofficial header-only C++17 client library.
ozo::base_async_operation< Operation, Initiator > Struct Template Reference

#include <ozo/asio.h>

Description

template<typename Operation, typename Initiator>
struct ozo::base_async_operation< Operation, Initiator >

Base class for async operations.

Base class for async operation which provides facilities for initiator rebinding. Should be used by all the operations which support extentions like failover via initiator rebinding.

Example

Execute operation may look like this (simplified, for exposition only):

template <typename Initiator>
struct execute_op : base_async_operation <execute_op, Initiator> {
using base = typename execute_op::base;
using base::base;
template <typename P, typename Q, typename TimeConstraint, typename CompletionToken>
decltype(auto) operator() (P&& provider, Q&& query, TimeConstraint t, CompletionToken&& token) const {
return async_initiate<CompletionToken, handler_signature<P>>(
get_operation_initiator(*this), token, std::forward<P>(provider), t, std::forward<Q>(query));
}
};
constexpr execute_op<impl::initiate_async_execute> execute;
ozo::execute
decltype(auto) execute(ConnectionProvider &&provider, BinaryQueryConvertible &&query, TimeConstraint time_constraint, CompletionToken &&token)
Executes query with no result data expected.
ozo::get_operation_initiator
constexpr auto get_operation_initiator(const Operation &op)
Get asynchronous operation initiator.
Definition: asio.h:166
CompletionToken
Completion token concept.