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
, 8u
, 0u
) 13 #error "SObjectizer-5.8.0 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 154 current_thread_id_t thread_id )
184 struct disp_ds_name_parts_t
final 203 template<
typename Activity_Tracker >
217 outliving_reference_t< environment_t > env,
218 outliving_reference_t< event_queue_impl_t<Activity_Tracker> > event_queue,
219 outliving_reference_t< Activity_Tracker > activity_tracker )
241 template<
typename Activity_Tracker >
248 outliving_reference_t<::asio::io_context> io_svc,
252 coop_listener_unique_ptr_t coop_listener,
254 mbox_t stats_distribution_mbox );
257 launch( env_init_t init_fn )
override;
280 coop_shptr_t coop )
noexcept override;
284 coop_shptr_t coop_name )
noexcept override;
296 const std::type_index & type_wrapper,
297 const message_ref_t & msg,
299 std::chrono::steady_clock::duration pause )
override;
370 template<
typename Activity_Tracker >
372 outliving_reference_t<::asio::io_context> io_svc,
374 coop_listener_unique_ptr_t coop_listener,
375 mbox_t stats_distribution_mbox )
385 template<
typename Activity_Tracker >
430 template<
typename Activity_Tracker >
451 template<
typename Activity_Tracker >
462 template<
typename Activity_Tracker >
470 template<
typename Activity_Tracker >
473 coop_shptr_t coop_to_dereg )
noexcept 484 template<
typename Activity_Tracker >
487 coop_shptr_t coop )
noexcept 493 template<
typename Activity_Tracker >
538 template<
typename Activity_Tracker >
541 const std::type_index & type_index,
542 const message_ref_t & msg,
544 std::chrono::steady_clock::duration pause )
558 template<
typename Activity_Tracker >
565 template<
typename Activity_Tracker >
572 template<
typename Activity_Tracker >
585 template<
typename Activity_Tracker >
594 template<
typename Activity_Tracker >
601 template<
typename Activity_Tracker >
634 template<
typename Activity_Tracker >
659 const environment_params_t & env_params )
661 if( env_params.autoshutdown_disabled() )
662 SO_5_THROW_EXCEPTION( rc_autoshutdown_must_be_enabled,
663 "autoshutdown feature must be enabled for " 664 "so_5::env_infrastructures::simple_not_mtsafe" );
701 using namespace impl;
705 environment_params_t & env_params,
706 mbox_t stats_distribution_mbox )
708 ensure_autoshutdown_enabled( env_params );
710 environment_infrastructure_t * obj =
nullptr;
714 const auto tracking = env_params.work_thread_activity_tracking();
715 if( work_thread_activity_tracking_t::on == tracking )
716 obj =
new env_infrastructure_t< reusable::real_activity_tracker_t >(
717 outliving_mutable(io_svc),
719 env_params.so5_giveout_coop_listener(),
720 std::move(stats_distribution_mbox) );
722 obj =
new env_infrastructure_t< reusable::fake_activity_tracker_t >(
723 outliving_mutable(io_svc),
725 env_params.so5_giveout_coop_listener(),
726 std::move(stats_distribution_mbox) );
728 return environment_infrastructure_unique_ptr_t(
730 environment_infrastructure_t::default_deleter() );
Ranges for error codes of each submodules.