Небольшой кусочек кода, над которым вот прямо сейчас идет работа.
Зачем я его показываю? Наверное, чтобы было понятно, что короткие идентификаторы -- это не про меня ;)
template< typename Traits = default_traits_t > inline private_dispatcher_handle_t create_private_disp( //! SObjectizer Environment to work in. environment_t & env, //! Value for creating names of data sources for //! run-time monitoring. const std::string & data_sources_name_base, //! Parameters for the dispatcher. disp_params_t disp_params ) { const auto io_svc_ptr = disp_params.io_service(); if( !io_svc_ptr ) //FIXME: must be replaced by SO_5_THROW_EXCEPTION! throw std::invalid_argument( "io_service is not set in disp_params" ); if( !disp_params.thread_count() ) disp_params.thread_count( default_thread_pool_size() ); using so_5::stats::activity_tracking_stuff::create_appropriate_disp; auto disp = create_appropriate_disp< // Type of result pointer. private_dispatcher_t, // Actual type of dispatcher without thread activity tracking. impl::real_private_dispatcher_t< Traits, impl::dispatcher_skeleton_without_thread_activity_tracking_t >, // Actual type of dispatcher with thread activity tracking. impl::real_private_dispatcher_t< Traits, impl::dispatcher_skeleton_with_thread_activity_tracking_t > >( // Args for create_appropriate_disp. env, disp_params, // Args for real_private_dispatcher_t constructors. env, data_sources_name_base, disp_params ); return { disp.release() }; } |
PS. Код еще на альфа-стадии.