9 #include <so_5_extra/env_infrastructures/asio/impl/common.hpp> 11 #include <so_5/rt/impl/h/st_env_infrastructure_reuse.hpp> 12 #include <so_5/details/h/sync_helpers.hpp> 13 #include <so_5/details/h/at_scope_exit.hpp> 14 #include <so_5/details/h/invoke_noexcept_code.hpp> 16 #include <so_5/h/stdcpp.hpp> 74 template<
typename Activity_Tracker >
88 outliving_reference_t<::asio::io_context> io_svc,
90 outliving_reference_t<Activity_Tracker> activity_tracker )
96 push( execution_demand_t demand )
override 133 current_thread_id_t thread_id )
163 struct disp_ds_name_parts_t
final 223 template<
typename Activity_Tracker >
230 outliving_reference_t<::asio::io_context> io_svc,
234 coop_listener_unique_ptr_t coop_listener,
236 mbox_t stats_distribution_mbox );
239 launch( env_init_t init_fn )
override;
246 coop_unique_ptr_t coop )
override;
250 nonempty_name_t name,
251 coop_dereg_reason_t dereg_reason )
override;
255 coop_t * coop )
override;
259 std::string coop_name )
override;
271 const std::type_index & type_wrapper,
272 const message_ref_t & msg,
274 std::chrono::steady_clock::duration pause )
override;
336 template<
typename Activity_Tracker >
338 outliving_reference_t<::asio::io_context> io_svc,
340 coop_listener_unique_ptr_t coop_listener,
341 mbox_t stats_distribution_mbox )
355 template<
typename Activity_Tracker >
390 template<
typename Activity_Tracker >
416 template<
typename Activity_Tracker >
419 coop_unique_ptr_t coop )
424 template<
typename Activity_Tracker >
427 nonempty_name_t name,
428 coop_dereg_reason_t dereg_reason )
433 template<
typename Activity_Tracker >
446 template<
typename Activity_Tracker >
449 std::string coop_name )
455 template<
typename Activity_Tracker >
500 template<
typename Activity_Tracker >
503 const std::type_index & type_index,
504 const message_ref_t & msg,
506 std::chrono::steady_clock::duration pause )
520 template<
typename Activity_Tracker >
527 template<
typename Activity_Tracker >
534 template<
typename Activity_Tracker >
541 template<
typename Activity_Tracker >
555 template<
typename Activity_Tracker >
564 template<
typename Activity_Tracker >
572 template<
typename Activity_Tracker >
605 template<
typename Activity_Tracker >
633 const environment_params_t & env_params )
635 if( env_params.autoshutdown_disabled() )
636 SO_5_THROW_EXCEPTION( rc_autoshutdown_must_be_enabled,
637 "autoshutdown feature must be enabled for " 638 "so_5::env_infrastructures::simple_not_mtsafe" );
675 using namespace impl;
679 environment_params_t & env_params,
680 mbox_t stats_distribution_mbox )
682 ensure_autoshutdown_enabled( env_params );
684 environment_infrastructure_t * obj =
nullptr;
688 const auto tracking = env_params.work_thread_activity_tracking();
689 if( work_thread_activity_tracking_t::on == tracking )
690 obj =
new env_infrastructure_t< reusable::real_activity_tracker_t >(
691 outliving_mutable(io_svc),
693 env_params.so5__giveout_coop_listener(),
694 std::move(stats_distribution_mbox) );
696 obj =
new env_infrastructure_t< reusable::fake_activity_tracker_t >(
697 outliving_mutable(io_svc),
699 env_params.so5__giveout_coop_listener(),
700 std::move(stats_distribution_mbox) );
702 return environment_infrastructure_unique_ptr_t(
704 environment_infrastructure_t::default_deleter() );
Ranges for error codes of each submodules.