9 #include <so_5_extra/env_infrastructures/asio/impl/common.hpp> 11 #include <so_5/impl/st_env_infrastructure_reuse.hpp> 12 #include <so_5/impl/internal_env_iface.hpp> 13 #include <so_5/details/sync_helpers.hpp> 14 #include <so_5/details/at_scope_exit.hpp> 15 #include <so_5/details/invoke_noexcept_code.hpp> 19 #include <string_view> 75 template<
typename Activity_Tracker >
89 outliving_reference_t<::asio::io_context> io_svc,
91 outliving_reference_t<Activity_Tracker> activity_tracker )
97 push( execution_demand_t demand )
override 134 current_thread_id_t thread_id )
164 struct disp_ds_name_parts_t
final 183 template<
typename Activity_Tracker >
197 outliving_reference_t< environment_t > env,
198 outliving_reference_t< event_queue_impl_t<Activity_Tracker> > event_queue,
199 outliving_reference_t< Activity_Tracker > activity_tracker )
221 template<
typename Activity_Tracker >
228 outliving_reference_t<::asio::io_context> io_svc,
232 coop_listener_unique_ptr_t coop_listener,
234 mbox_t stats_distribution_mbox );
237 launch( env_init_t init_fn )
override;
254 coop_shptr_t coop )
noexcept override;
258 coop_shptr_t coop_name )
override;
270 const std::type_index & type_wrapper,
271 const message_ref_t & msg,
273 std::chrono::steady_clock::duration pause )
override;
344 template<
typename Activity_Tracker >
346 outliving_reference_t<::asio::io_context> io_svc,
348 coop_listener_unique_ptr_t coop_listener,
349 mbox_t stats_distribution_mbox )
359 template<
typename Activity_Tracker >
404 template<
typename Activity_Tracker >
430 template<
typename Activity_Tracker >
433 coop_handle_t parent,
434 disp_binder_shptr_t default_binder )
441 template<
typename Activity_Tracker >
449 template<
typename Activity_Tracker >
452 coop_shptr_t coop_to_dereg )
noexcept 463 template<
typename Activity_Tracker >
472 template<
typename Activity_Tracker >
517 template<
typename Activity_Tracker >
520 const std::type_index & type_index,
521 const message_ref_t & msg,
523 std::chrono::steady_clock::duration pause )
537 template<
typename Activity_Tracker >
544 template<
typename Activity_Tracker >
551 template<
typename Activity_Tracker >
564 template<
typename Activity_Tracker >
573 template<
typename Activity_Tracker >
580 template<
typename Activity_Tracker >
613 template<
typename Activity_Tracker >
638 const environment_params_t & env_params )
640 if( env_params.autoshutdown_disabled() )
641 SO_5_THROW_EXCEPTION( rc_autoshutdown_must_be_enabled,
642 "autoshutdown feature must be enabled for " 643 "so_5::env_infrastructures::simple_not_mtsafe" );
680 using namespace impl;
684 environment_params_t & env_params,
685 mbox_t stats_distribution_mbox )
687 ensure_autoshutdown_enabled( env_params );
689 environment_infrastructure_t * obj =
nullptr;
693 const auto tracking = env_params.work_thread_activity_tracking();
694 if( work_thread_activity_tracking_t::on == tracking )
695 obj =
new env_infrastructure_t< reusable::real_activity_tracker_t >(
696 outliving_mutable(io_svc),
698 env_params.so5__giveout_coop_listener(),
699 std::move(stats_distribution_mbox) );
701 obj =
new env_infrastructure_t< reusable::fake_activity_tracker_t >(
702 outliving_mutable(io_svc),
704 env_params.so5__giveout_coop_listener(),
705 std::move(stats_distribution_mbox) );
707 return environment_infrastructure_unique_ptr_t(
709 environment_infrastructure_t::default_deleter() );
Ranges for error codes of each submodules.