11 #include <so_5_extra/async_op/details.hpp> 12 #include <so_5_extra/async_op/errors.hpp> 14 #include <so_5/details/invoke_noexcept_code.hpp> 16 #include <so_5/agent.hpp> 18 #include <so_5/outliving.hpp> 49 template<
typename Operation_Data >
52 template<
typename Operation_Data >
86 template<
typename Operation_Data >
88 template<
typename Operation_Data >
119 const so_5::state_t & state,
120 std::type_index subscription_type,
121 so_5::event_handler_method_t handler )
145 ::so_5::outliving_reference_t<::so_5::agent_t> owner )
156 m_subscriptions.reserve( capacity );
180 typename Operation_Data,
182 typename Event_Handler >
186 ::so_5::intrusive_ptr_t< Operation_Data > actual_data,
188 Msg_Target && msg_target,
190 const ::so_5::state_t & state,
192 Event_Handler && evt_handler )
232 ensure_not_activated();
234 if( !m_subscriptions.empty() )
236 create_subscriptions();
240 SO_5_THROW_EXCEPTION(
241 ::so_5::extra::async_op::errors::rc_no_completion_handler,
242 "Operation can't be activated without any completion " 269 destroy_and_clear_subscriptions();
274 m_subscriptions.clear();
279 SO_5_NODISCARD status_t
300 "Operation can't be performed when async_op is already " 449 details::op_shptr_t< Operation_Data > op )
473 SO_5_NODISCARD status_t
679 "an attempt to use empty definition_point object" );
686 ::so_5::outliving_reference_t< ::so_5::agent_t > owner )
727 std::size_t capacity ) &
737 template<
typename... Args >
741 return std::move(
this->reserve_completion_handlers_capacity(
742 std::forward<Args>(args)... ));
822 template<
typename...
Args >
883 "definition_point_t doesn't hold operation data anymore." );
933 template<
typename...
Args >
Ranges for error codes of each submodules.