9 #include <so_5_extra/env_infrastructures/asio/impl/common.hpp> 11 #include <so_5/version.hpp> 12 #if SO_5_VERSION < SO_5_VERSION_MAKE(5u
, 7u
, 3u
) 13 #error "SObjectizer-5.7.3 is required" 16 #include <so_5/impl/st_env_infrastructure_reuse.hpp> 17 #include <so_5/impl/internal_env_iface.hpp> 18 #include <so_5/details/sync_helpers.hpp> 19 #include <so_5/details/at_scope_exit.hpp> 20 #include <so_5/details/invoke_noexcept_code.hpp> 24 #include <string_view> 80 template<
typename Activity_Tracker >
94 outliving_reference_t<::asio::io_context> io_svc,
96 outliving_reference_t<Activity_Tracker> activity_tracker )
102 push( execution_demand_t demand )
override 139 current_thread_id_t thread_id )
169 struct disp_ds_name_parts_t
final 188 template<
typename Activity_Tracker >
202 outliving_reference_t< environment_t > env,
203 outliving_reference_t< event_queue_impl_t<Activity_Tracker> > event_queue,
204 outliving_reference_t< Activity_Tracker > activity_tracker )
226 template<
typename Activity_Tracker >
233 outliving_reference_t<::asio::io_context> io_svc,
237 coop_listener_unique_ptr_t coop_listener,
239 mbox_t stats_distribution_mbox );
242 launch( env_init_t init_fn )
override;
259 coop_shptr_t coop )
noexcept override;
263 coop_shptr_t coop_name )
override;
275 const std::type_index & type_wrapper,
276 const message_ref_t & msg,
278 std::chrono::steady_clock::duration pause )
override;
349 template<
typename Activity_Tracker >
351 outliving_reference_t<::asio::io_context> io_svc,
353 coop_listener_unique_ptr_t coop_listener,
354 mbox_t stats_distribution_mbox )
364 template<
typename Activity_Tracker >
409 template<
typename Activity_Tracker >
435 template<
typename Activity_Tracker >
446 template<
typename Activity_Tracker >
454 template<
typename Activity_Tracker >
457 coop_shptr_t coop_to_dereg )
noexcept 468 template<
typename Activity_Tracker >
477 template<
typename Activity_Tracker >
522 template<
typename Activity_Tracker >
525 const std::type_index & type_index,
526 const message_ref_t & msg,
528 std::chrono::steady_clock::duration pause )
542 template<
typename Activity_Tracker >
549 template<
typename Activity_Tracker >
556 template<
typename Activity_Tracker >
569 template<
typename Activity_Tracker >
578 template<
typename Activity_Tracker >
585 template<
typename Activity_Tracker >
618 template<
typename Activity_Tracker >
643 const environment_params_t & env_params )
645 if( env_params.autoshutdown_disabled() )
646 SO_5_THROW_EXCEPTION( rc_autoshutdown_must_be_enabled,
647 "autoshutdown feature must be enabled for " 648 "so_5::env_infrastructures::simple_not_mtsafe" );
685 using namespace impl;
689 environment_params_t & env_params,
690 mbox_t stats_distribution_mbox )
692 ensure_autoshutdown_enabled( env_params );
694 environment_infrastructure_t * obj =
nullptr;
698 const auto tracking = env_params.work_thread_activity_tracking();
699 if( work_thread_activity_tracking_t::on == tracking )
700 obj =
new env_infrastructure_t< reusable::real_activity_tracker_t >(
701 outliving_mutable(io_svc),
703 env_params.so5_giveout_coop_listener(),
704 std::move(stats_distribution_mbox) );
706 obj =
new env_infrastructure_t< reusable::fake_activity_tracker_t >(
707 outliving_mutable(io_svc),
709 env_params.so5_giveout_coop_listener(),
710 std::move(stats_distribution_mbox) );
712 return environment_infrastructure_unique_ptr_t(
714 environment_infrastructure_t::default_deleter() );
Ranges for error codes of each submodules.