4 #include <ozo/connection.h>
8 template <
typename Prov
ider>
9 class bind_get_connection_timeout {
14 using target_type = Provider;
17 bind_get_connection_timeout(Provider target, duration timeout)
18 : target_(std::move(target)), timeout_(timeout) {}
20 template <
typename TimeConstra
int,
typename Handler>
21 void async_get_connection(TimeConstraint t,
Handler&& handler)
const& {
22 static_assert(ozo::TimeConstraint<TimeConstraint>,
"should model TimeConstraint concept");
23 ozo::async_get_connection(target(), timeout(t), std::forward<Handler>(handler));
26 template <
typename TimeConstra
int,
typename Handler>
27 void async_get_connection(TimeConstraint t,
Handler&& handler) & {
28 static_assert(ozo::TimeConstraint<TimeConstraint>,
"should model TimeConstraint concept");
29 ozo::async_get_connection(target(), timeout(t), std::forward<Handler>(handler));
32 template <
typename TimeConstra
int,
typename Handler>
33 void async_get_connection(TimeConstraint t,
Handler&& handler) && {
34 static_assert(ozo::TimeConstraint<TimeConstraint>,
"should model TimeConstraint concept");
35 ozo::async_get_connection(std::move(target()), timeout(t), std::forward<Handler>(handler));
38 target_type& target() & noexcept {
return target_; }
39 target_type& target() && noexcept {
return target_; }
40 const target_type& target() const & noexcept {
return target_; }
41 constexpr duration timeout()
const {
return timeout_;}
42 constexpr duration timeout(none_t)
const {
return timeout_;}
65 template <
typename ConnectionSource>
68 static_assert(ozo::ConnectionSource<ConnectionSource>,
"ConnectionSource should model ConnectionSource concept");
78 using connection_type =
typename connection_source_traits<source_type>::connection_type;
90 template <
typename TimeConstra
int,
typename Handler>
91 void async_get_connection(TimeConstraint t,
Handler&& h)
const& {
92 static_assert(ozo::TimeConstraint<TimeConstraint>,
"should model TimeConstraint concept");
93 source_(io_, std::move(t), std::forward<Handler>(h));
96 template <
typename TimeConstra
int,
typename Handler>
97 void async_get_connection(TimeConstraint t,
Handler&& h) & {
98 static_assert(ozo::TimeConstraint<TimeConstraint>,
"should model TimeConstraint concept");
99 source_(io_, std::move(t), std::forward<Handler>(h));
102 template <
typename TimeConstra
int,
typename Handler>
103 void async_get_connection(TimeConstraint t,
Handler&& h) && {
104 static_assert(ozo::TimeConstraint<TimeConstraint>,
"should model TimeConstraint concept");
105 std::move(source_)(io_, std::move(t), std::forward<Handler>(h));
113 template <
typename ConnectionSource>
115 -> connection_provider<ConnectionSource>;