2
3
6
7
8
9
10
11
13#include <so_5/wrapped_env.hpp>
15#include <so_5/details/invoke_noexcept_code.hpp>
17#include <condition_variable>
30
31
32
33
34
41 so_5::generic_simple_init_t init,
47 ,
m_init( std::move(init) )
78 bool should_stop =
false;
101
102
103
104
105
106
107
108
109
110
111
112
113
118
119
120
121
144 std::rethrow_exception(
156
157
180
181
182
183
184
185
186
187
188
189
190
191
192
196
197
198
199
200
201
209
210
211
212
213
214
234
235
236
237
238
249 so_5::generic_simple_init_t init_func,
252 :
m_env{ std::move( init_func )
, std::move( params )
, init_style
}
291 so_5::generic_simple_init_t init_func,
297 std::move( init_func )
,
307 return std::move( params );
321 so_5::generic_simple_init_t init_func,
326 std::move( init_func )
,
339 so_5::generic_simple_init_t init_func )
341 std::move( init_func )
,
346 so_5::generic_simple_init_t init_func,
347 so_5::generic_simple_so_env_params_tuner_t params_tuner )
349 std::move( init_func )
,
354 so_5::generic_simple_init_t init_func,
357 std::move( init_func )
,
364 so_5::generic_simple_init_t init_func )
366 wait_init_completion_indicator
,
367 std::move( init_func )
,
373 so_5::generic_simple_init_t init_func,
376 std::move( init_func )
,
383 so_5::generic_simple_init_t init_func,
384 so_5::generic_simple_so_env_params_tuner_t params_tuner )
386 wait_init_completion_indicator
,
387 std::move( init_func )
,
395 std::move( params )
}
Implementation of environment to be used inside wrapped_env.
status_t m_status
Status of environment.
const init_style_t m_init_style
Style of initialization (asynchronous or synchronous).
void ensure_started()
Wait for change of the status.
actual_environment_t(so_5::generic_simple_init_t init, environment_params_t &&env_params, init_style_t init_style)
Initializing constructor.
std::exception_ptr m_exception_from_init_functor
Exception from init-functor.
void call_init_functor_sync_style() noexcept
Helper for calling init-functor in synchronous mode.
status_t
Status of environment.
@ started
init() is called and is about to call init-functor.
@ init_functor_completed
init-functor completed its work.
@ not_started
init() is not called yet.
void init() override
Initialization hook.
std::condition_variable m_status_cond
Condition for waiting on status.
so_5::generic_simple_init_t m_init
Initialization routine.
void call_init_functor_async_style()
Helper for calling init-functor in asynchronous mode.
std::mutex m_status_lock
Lock object for defending status.
Parameters for the SObjectizer Environment initialization.
environment_params_t & disable_autoshutdown()
Do not shutdown SO Environment when it is becomes empty.
environment_params_t()
Constructor.
void run()
Run the SObjectizer Run-Time.
environment_t(environment_params_t &&so_environment_params)
void stop() noexcept
Send a shutdown signal to the Run-Time.
void stop()
Send stop signal to environment.
wrapped_env_t(wait_init_completion_t wait_init_completion_indicator, so_5::generic_simple_init_t init_func, environment_params_t &¶ms)
A constructor for synchronous mode which receives initialization function and already prepared enviro...
void stop_then_join()
Send stop signal and wait for complete finish of environment's work.
wrapped_env_t(so_5::generic_simple_init_t init_func, environment_params_t &¶ms)
std::unique_ptr< details_t > m_impl
Implementation details.
wrapped_env_t(environment_params_t &¶ms)
A constructor which receives already prepared environment's params.
wrapped_env_t(so_5::generic_simple_init_t init_func)
A constructor which receives only initialization function.
wrapped_env_t()
Default constructor.
~wrapped_env_t()
Destructor.
wrapped_env_t(wait_init_completion_t wait_init_completion_indicator, so_5::generic_simple_init_t init_func, so_5::generic_simple_so_env_params_tuner_t params_tuner)
A constructor for synchronous mode which receives initialization function and a function for environm...
wrapped_env_t(wait_init_completion_t wait_init_completion_indicator, so_5::generic_simple_init_t init_func)
A constructor for synchronous mode which receives only initialization function.
wrapped_env_t(so_5::generic_simple_init_t init_func, so_5::generic_simple_so_env_params_tuner_t params_tuner)
A constructor which receives initialization function and a function for environment's params tuning.
void join()
Wait for complete finish of environment's work.
environment_t & environment() const
Access to wrapped environment.
wrapped_env_t(so_5::generic_simple_init_t init_func, environment_params_t &¶ms, wrapped_env_details::init_style_t init_style)
The main initializing constructor.
wait_init_completion_t
Helper type to be used as indicator of synchronous mode.
environment_params_t make_params_via_tuner(so_5::generic_simple_so_env_params_tuner_t tuner)
environment_params_t make_necessary_tuning(environment_params_t &¶ms)
std::unique_ptr< wrapped_env_t::details_t > make_details_object(so_5::generic_simple_init_t init_func, environment_params_t &¶ms, init_style_t init_style)
Some reusable and low-level classes/functions which can be used in public header files.
auto invoke_noexcept_code(L lambda) noexcept -> decltype(lambda())
init_style_t
Style of handling init-functor in the constructor of wrapped_env.
Private part of message limit implementation.
Implementation details for wrapped_env.
std::thread m_env_thread
Helper thread for calling run method.
details_t(so_5::generic_simple_init_t init_func, environment_params_t &¶ms, init_style_t init_style)
Initializing constructor.
actual_environment_t m_env
Actual environment object.