11 #include <so_5_extra/async_op/details.hpp> 12 #include <so_5_extra/async_op/errors.hpp> 14 #include <so_5/details/h/invoke_noexcept_code.hpp> 16 #include <so_5/rt/h/agent.hpp> 18 #include <so_5/h/outliving.hpp> 20 #if defined(SO_5_VERSION) 21 #if (SO_5_VERSION < SO_5_VERSION_MAKE(5
, 21
, 0
)) 22 #error "SObjectizer v.5.5.21 or above is required" 25 #error "SObjectizer v.5.5.21 or above is required" 57 template<
typename Operation_Data >
60 template<
typename Operation_Data >
94 template<
typename Operation_Data >
96 template<
typename Operation_Data >
127 const so_5::state_t & state,
128 std::type_index subscription_type,
129 so_5::event_handler_method_t handler )
153 ::so_5::outliving_reference_t<::so_5::agent_t> owner )
164 m_subscriptions.reserve( capacity );
188 typename Operation_Data,
190 typename Event_Handler >
194 ::so_5::intrusive_ptr_t< Operation_Data > actual_data,
196 Msg_Target && msg_target,
198 const ::so_5::state_t & state,
200 Event_Handler && evt_handler )
241 ensure_not_activated();
243 if( !m_subscriptions.empty() )
245 create_subscriptions();
249 SO_5_THROW_EXCEPTION(
250 ::so_5::extra::async_op::errors::rc_no_completion_handler,
251 "Operation can't be activated without any completion " 278 destroy_and_clear_subscriptions();
283 m_subscriptions.clear();
288 SO_5_NODISCARD status_t
309 "Operation can't be performed when async_op is already " 458 details::op_shptr_t< Operation_Data > op )
482 SO_5_NODISCARD status_t
688 "an attempt to use empty definition_point object" );
695 ::so_5::outliving_reference_t< ::so_5::agent_t > owner )
736 std::size_t capacity ) &
746 template<
typename... Args >
750 return std::move(
this->reserve_completion_handlers_capacity(
751 std::forward<Args>(args)... ));
831 template<
typename...
Args >
892 "definition_point_t doesn't hold operation data anymore." );
942 template<
typename...
Args >
Ranges for error codes of each submodules.