Skip to content

Instantly share code, notes, and snippets.

@nobleread
Created April 27, 2020 11:22
Show Gist options
  • Save nobleread/3831163af471d2ffdc20b033778d4477 to your computer and use it in GitHub Desktop.
Save nobleread/3831163af471d2ffdc20b033778d4477 to your computer and use it in GitHub Desktop.
#17 Source "/path/ozo/transaction.h", line 57, in operator()<std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> >, boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >, ozo::none_t, spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >&> [0x471ab1]
54: using namespace ozo::literals;
55: return async_initiate<CompletionToken, handler_signature<T>>(
56: impl::initiate_async_end_transaction{}, token,
> 57: std::move(transaction), "COMMIT"_SQL, t);
58: }
59:
60: template <typename... Ts, typename CompletionToken>
#16 Source "/path/ozo/asio.h", line 23, in async_initiate<spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >&, void(boost::system::error_code, std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> >), ozo::impl::initiate_async_end_transaction, ozo::impl::transaction<std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> >, boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> > >, ozo::query_builder<boost::hana::tuple<ozo::query_element<boost::hana::string<'C', 'O', 'M', 'M', 'I', 'T'>, ozo::query_text_tag> > >, ozo::none_t&> [0x471a01]
20: CompletionToken& token, Args&&... args) {
21: async_completion<CompletionToken, Signature> completion(token);
22:
> 23: initiation(std::move(completion.completion_handler), std::forward<Args>(args)...);
24:
25: return completion.result.get();
26: }
#15 Source "/path/ozo/impl/async_end_transaction.h", line 49, in operator()<spawn::detail::coro_handler<boost::asio::executor_binder<void (*)(), boost::asio::executor>, std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> > >, ozo::impl::transaction<std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> >, boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> > >, ozo::query_builder<boost::hana::tuple<ozo::query_element<boost::hana::string<'C', 'O', 'M', 'M', 'I', 'T'>, ozo::query_text_tag> > >, ozo::none_t&> [0x472ab2]
46: struct initiate_async_end_transaction {
47: template <typename Handler, typename ...Args>
48: constexpr void operator()(Handler&& h, Args&& ...args) const {
> 49: async_end_transaction(std::forward<Args>(args)..., std::forward<Handler>(h));
50: }
51: };
#14 Source "/path/ozo/impl/async_end_transaction.h", line 42, in async_end_transaction<ozo::impl::transaction<std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> >, boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> > >, ozo::query_builder<boost::hana::tuple<ozo::query_element<boost::hana::string<'C', 'O', 'M', 'M', 'I', 'T'>, ozo::query_text_tag> > >, ozo::none_t, spawn::detail::coro_handler<boost::asio::executor_binder<void (*)(), boost::asio::executor>, std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> > > > [0x473af0]
39: template <typename T, typename Query, typename TimeConstraint, typename Handler>
40: Require<ConnectionProvider<T>> async_end_transaction(T&& provider, Query&& query,
41: TimeConstraint t, Handler&& handler) {
> 42: make_async_end_transaction_op(std::forward<Handler>(handler))
43: .perform(std::forward<T>(provider), std::forward<Query>(query), t);
44: }
#13 Source "/path/ozo/impl/async_end_transaction.h", line 17, in perform<ozo::impl::transaction<std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> >, boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> > >, ozo::query_builder<boost::hana::tuple<ozo::query_element<boost::hana::string<'C', 'O', 'M', 'M', 'I', 'T'>, ozo::query_text_tag> > >, ozo::none_t> [0x4747ec]
14: void perform(T&& provider, Query&& query, TimeConstraint t) {
15: static_assert(Connection<T>, "T is not a Connection");
16: static_assert(ozo::TimeConstraint<TimeConstraint>, "should model TimeConstraint concept");
> 17: async_execute(std::forward<T>(provider), std::forward<Query>(query), t, std::move(*this));
18: }
19:
20: template <typename Connection, typename Options>
#12 Source "/path/ozo/impl/async_execute.h", line 13, in async_execute<ozo::impl::transaction<std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> >, boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> > >, ozo::query_builder<boost::hana::tuple<ozo::query_element<boost::hana::string<'C', 'O', 'M', 'M', 'I', 'T'>, ozo::query_text_tag> > >, ozo::none_t, ozo::impl::async_end_transaction_op<spawn::detail::coro_handler<boost::asio::executor_binder<void (*)(), boost::asio::executor>, std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> > > > > [0x475e3b]
10: static_assert(ConnectionProvider<P>, "is not a ConnectionProvider");
11: static_assert(BinaryQueryConvertible<Q>, "query should be convertible to the binary_query");
12: static_assert(ozo::TimeConstraint<TimeConstraint>, "should model TimeConstraint concept");
> 13: async_get_connection(std::forward<P>(provider), deadline(t),
14: async_request_op {
15: std::forward<Q>(query),
16: deadline(t),
#11 Source "/path/ozo/connection.h", line 682, in async_get_connection<ozo::impl::transaction<std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> >, boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> > >, ozo::none_t, ozo::impl::async_request_op<ozo::none_t, ozo::query_builder<boost::hana::tuple<ozo::query_element<boost::hana::string<'C', 'O', 'M', 'M', 'I', 'T'>, ozo::query_text_tag> > >, ozo::none_t, ozo::impl::async_end_transaction_op<spawn::detail::coro_handler<boost::asio::executor_binder<void (*)(), boost::asio::executor>, std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> > > > > > [0x476c34]
679: apply(std::forward<Provider>(p), t, std::forward<Handler>(h))) {
680: static_assert(ozo::TimeConstraint<TimeConstraint>, "should model TimeConstraint concept");
681: return async_get_connection_impl<std::decay_t<Provider>, TimeConstraint>::
> 682: apply(std::forward<Provider>(p), t, std::forward<Handler>(h));
683: }
684:
685: namespace detail {
#10 Source "/path/ozo/connection.h", line 592, in apply<ozo::impl::transaction<std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> >, boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> > >, ozo::none_t, ozo::impl::async_request_op<ozo::none_t, ozo::query_builder<boost::hana::tuple<ozo::query_element<boost::hana::string<'C', 'O', 'M', 'M', 'I', 'T'>, ozo::query_text_tag> > >, ozo::none_t, ozo::impl::async_end_transaction_op<spawn::detail::coro_handler<boost::asio::executor_binder<void (*)(), boost::asio::executor>, std::shared_ptr<ozo::pooled_connection<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >, boost::asio::io_context::executor_type> > > > > > [0x477dc0]
589: template <typename Conn, typename TimeConstraint, typename Handler>
590: static constexpr void apply(Conn&& c, TimeConstraint, Handler&& h) {
591: static_assert(ozo::TimeConstraint<TimeConstraint>, "should model TimeConstraint concept");
> 592: unwrap_connection(c).set_error_context();
593: auto ex = unwrap_connection(c).get_executor();
594: asio::dispatch(ex, detail::bind(std::forward<Handler>(h), error_code{}, std::forward<Conn>(c)));
595: }
#9 Source "/path/ozo/connection_pool.h", line 166, in set_error_context [0x476400]
163: * @param v --- new error context.
164: */
165: void set_error_context(error_context_type v = {}) {
> 166: ozo::unwrap(rep_).set_error_context(std::move(v));
167: }
168:
169: /**
#8 Source "/path/ozo/core/unwrap.h", line 59, in unwrap<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >&> [0x47413d]
56: template <typename T>
57: constexpr decltype(auto) unwrap(T&& v) noexcept(
58: noexcept(unwrap_impl<std::decay_t<T>>::apply(std::forward<T>(v)))) {
> 59: return unwrap_impl<std::decay_t<T>>::apply(std::forward<T>(v));
60: }
61:
62: template <typename T>
#7 Source "/path/ozo/impl/connection_pool.h", line 106, in apply<yamail::resource_pool::handle<ozo::connection_rep<ozo::oid_map_t<>, ozo::none_t> >&> [0x47411b]
103: struct unwrap_impl<yamail::resource_pool::handle<V>> {
104: template <typename T>
105: static constexpr decltype(auto) apply(T&& handle) {
> 106: return *handle;
107: }
108: };
#6 Source "/path/resource_pool/handle.hpp", line 44, in operator* [0x474e33]
41: const value_type& get() const;
42: value_type *operator ->() { return &get(); }
43: const value_type *operator ->() const { return &get(); }
> 44: value_type &operator *() { return get(); }
45: const value_type &operator *() const { return get(); }
46:
47: void recycle();
#5 Source "/path/resource_pool/handle.hpp", line 91, in get [0x4761a3]
89: template <class P>
90: typename handle<P>::value_type& handle<P>::get() {
> 91: assert_not_empty();
92: return *_resource_it.get()->value;
93: }
#4 Source "/path/resource_pool/handle.hpp", line 124, in assert_not_empty [0x476d5c]
122: template <class P>
123: void handle<P>::assert_not_empty() const {
> 124: if (empty()) {
125: throw error::empty_handle();
126: }
127: }
#3 Source "/path/resource_pool/handle.hpp", line 39, in empty [0x477f7d]
36: handle& operator =(handle&& other);
37:
38: bool unusable() const noexcept { return !static_cast<bool>(_resource_it); }
> 39: bool empty() const noexcept { return unusable() || !_resource_it.get()->value; }
40: value_type& get();
41: const value_type& get() const;
42: value_type *operator ->() { return &get(); }
#2 | Source "", line 38, in operator bool
Source "/path/boost/optional/optional.hpp", line 1448, in unusable [0x478d63]
1446: bool operator!() const BOOST_NOEXCEPT { return !this->is_initialized() ; }
1447:
>1448: BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()
1449: } ;
1450:
1451: } // namespace boost
#1 Source "/path/boost/optional/optional.hpp", line 1446, in operator! [0x47abeb]
1444: bool has_value() const BOOST_NOEXCEPT { return this->is_initialized() ; }
1445:
>1446: bool operator!() const BOOST_NOEXCEPT { return !this->is_initialized() ; }
1447:
1448: BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()
1449: } ;
#0 Source "/path/boost/optional/optional.hpp", line 396, in is_initialized [0x477fc0]
393: pointer_const_type get_ptr() const { return m_initialized ? get_ptr_impl() : 0 ; }
394: pointer_type get_ptr() { return m_initialized ? get_ptr_impl() : 0 ; }
395:
> 396: bool is_initialized() const BOOST_NOEXCEPT { return m_initialized ; }
397:
398: protected :
Segmentation fault (Address not mapped to object [0x20])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment