SObjectizer  5.8
Loading...
Searching...
No Matches
env_infrastructures.hpp
Go to the documentation of this file.
1/*
2 * SObjectizer-5
3 */
4
5/*!
6 * \file
7 * \brief User-visible parameters for various environment infrastructures.
8 *
9 * \since
10 * v.5.5.19
11 */
12
13#pragma once
14
15#include <so_5/timers.hpp>
16
17#include <so_5/environment_infrastructure.hpp>
18
19namespace so_5 {
20
22
23namespace default_mt {
24
25// NOTE: implemented in so_5/impl/mt_env_infrastructure.cpp
26/*!
27 * \brief A factory for creation the default multitheading
28 * environment infrastructure.
29 *
30 * Usage example:
31 * \code
32 so_5::launch(
33 [](so_5::environment_t & env) { ... },
34 [](so_5::environment_params_t & params) {
35 params.infrastructure_factory(
36 so_5::env_infrastructures::default_mt::factory() );
37 ...
38 } );
39 * \endcode
40 *
41 * \note
42 * This factory is used by default.
43 *
44 * \since
45 * v.5.5.19
46 */
48factory();
49
50} /* namespace default_mt */
51
52namespace simple_mtsafe {
53
54//
55// params_t
56//
57/*!
58 * \brief Parameters for simple thread-safe single-thread environment.
59 *
60 * Usage example:
61 * \code
62 so_5::env_infrastructures::simple_mtsafe::params_t params;
63 params.timer_manager( so_5::timer_list_manager_factory() );
64
65 env_params.infrastructure_factory( factory(std::move(params)) );
66 * \endcode
67 *
68 * \since
69 * v.5.5.19
70 */
72 {
73 //! Timer manager factory for environment.
74 /*!
75 * thread_heap mechanism is used by default.
76 */
78
79 public :
80 //! Setter for timer_manager factory.
81 params_t &
82 timer_manager( timer_manager_factory_t factory ) &
83 {
84 m_timer_factory = std::move(factory);
85 return *this;
86 }
87
88 //! Setter for timer_manager factory.
89 params_t &&
90 timer_manager( timer_manager_factory_t factory ) &&
91 {
92 m_timer_factory = std::move(factory);
93 return std::move(*this);
94 }
95
96 //! Getter for timer_manager factory.
99 {
100 return m_timer_factory;
101 }
102 };
103
104// NOTE: implemented in so_5/impl/simple_mtsafe_st_env_infastructure.cpp
105//
106// factory
107//
108/*!
109 * \brief A factory for creation of simple thread-safe
110 * single-thread environment infrastructure object.
111 *
112 * Usage example:
113 * \code
114 so_5::launch(
115 [](so_5::environment_t & env) { ... },
116 [](so_5::environment_params_t & params) {
117 params.infrastructure_factory(
118 factory( so_5::env_infrastructures::simple_mtsafe::params_t{}
119 .timer_manager( so_5::timer_list_manager_factory() ) ) );
120 ...
121 } );
122 * \endcode
123 *
124 * \since
125 * v.5.5.19
126 */
129
130/*!
131 * \brief A factory for creation of simple thread-safe
132 * single-thread environment infrastructure object with
133 * default parameters.
134 *
135 * Usage example:
136 * \code
137 so_5::launch(
138 [](so_5::environment_t & env) { ... },
139 [](so_5::environment_params_t & params) {
140 params.infrastructure_factory(
141 so_5::env_infrastructures::simple_mtsafe::factory() );
142 ...
143 } );
144 * \endcode
145 *
146 * \since
147 * v.5.5.19
148 */
151 {
152 return factory( params_t() );
153 }
154
155} /* namespace simple_mtsafe */
156
158
159//
160// params_t
161//
162/*!
163 * \brief Parameters for simple not-thread-safe single-thread environment.
164 *
165 * Usage example:
166 * \code
167 so_5::env_infrastructures::simple_not_mtsafe::params_t params;
168 params.timer_manager( so_5::timer_list_manager_factory() );
169
170 env_params.infrastructure_factory( factory(std::move(params)) );
171 * \endcode
172 *
173 * \since
174 * v.5.5.19
175 */
177 {
178 //! Timer manager factory for environment.
179 /*!
180 * thread_heap mechanism is used by default.
181 */
183
184 public :
185 //! Setter for timer_manager factory.
186 params_t &
187 timer_manager( timer_manager_factory_t factory ) &
188 {
189 m_timer_factory = std::move(factory);
190 return *this;
191 }
192
193 //! Setter for timer_manager factory.
194 params_t &&
195 timer_manager( timer_manager_factory_t factory ) &&
196 {
197 m_timer_factory = std::move(factory);
198 return std::move(*this);
199 }
200
201 //! Getter for timer_manager factory.
204 {
205 return m_timer_factory;
206 }
207 };
208
209// NOTE: implemented in so_5/impl/simple_not_mtsafe_st_env_infastructure.cpp
210//
211// factory
212//
213/*!
214 * \brief A factory for creation of simple not-thread-safe
215 * single-thread environment infrastructure object.
216 *
217 * Usage example:
218 * \code
219 so_5::launch(
220 [](so_5::environment_t & env) { ... },
221 [](so_5::environment_params_t & params) {
222 params.infrastructure_factory(
223 factory( so_5::env_infrastructures::simple_not_mtsafe::params_t{}
224 .timer_manager( so_5::timer_list_manager_factory() ) ) );
225 ...
226 } );
227 * \endcode
228 *
229 * \since
230 * v.5.5.19
231 */
234
235/*!
236 * \brief A factory for creation of simple not-thread-safe
237 * single-thread environment infrastructure object with
238 * default parameters.
239 *
240 * Usage example:
241 * \code
242 so_5::launch(
243 [](so_5::environment_t & env) { ... },
244 [](so_5::environment_params_t & params) {
245 params.infrastructure_factory(
246 so_5::env_infrastructures::simple_not_mtsafe::factory() );
247 ...
248 } );
249 * \endcode
250 *
251 * \since
252 * v.5.5.19
253 */
256 {
257 return factory( params_t() );
258 }
259
260} /* namespace simple_not_mtsafe */
261
262} /* namespace env_infrastructures */
263
264} /* namespace so_5 */
A base class for agents.
Definition agent.hpp:673
autoshutdown_guard_t(environment_t &env, bool autoshutdown_disabled)
stats::auto_registered_source_holder_t< stats::impl::ds_timer_thread_stats_t > m_timer_thread
Data source for timer thread.
stats::auto_registered_source_holder_t< stats::impl::ds_agent_core_stats_t > m_coop_repository
Data source for cooperations repository.
stats::auto_registered_source_holder_t< stats::impl::ds_mbox_core_stats_t > m_mbox_repository
Data source for mboxes repository.
core_data_sources_t(outliving_reference_t< stats::repository_t > ds_repository, impl::mbox_core_t &mbox_repository, so_5::environment_infrastructure_t &infrastructure)
event_queue_t * on_bind(agent_t *, event_queue_t *original_queue) noexcept override
A reaction to binding of an agent to some event_queue.
void on_unbind(agent_t *, event_queue_t *) noexcept override
A reaction to unbinding of an agent from some event_queue.
The base class for the object with a reference counting.
Type of smart handle for a cooperation.
A special type that plays role of unique_ptr for coop.
Definition coop.hpp:1342
Interface for creator of new mbox in OOP style.
A class to be used as mixin with actual std::mutex instance inside.
auto lock_and_perform(Lambda &&l) const -> decltype(l())
Do actual lock and perform necessary action.
A class to be used as mixin without any real mutex instance inside.
auto lock_and_perform(Lambda &&l) const -> decltype(l())
Perform necessary action.
Parameters for simple thread-safe single-thread environment.
params_t & timer_manager(timer_manager_factory_t factory) &
Setter for timer_manager factory.
timer_manager_factory_t m_timer_factory
Timer manager factory for environment.
const timer_manager_factory_t & timer_manager() const
Getter for timer_manager factory.
params_t && timer_manager(timer_manager_factory_t factory) &&
Setter for timer_manager factory.
Parameters for simple not-thread-safe single-thread environment.
params_t && timer_manager(timer_manager_factory_t factory) &&
Setter for timer_manager factory.
params_t & timer_manager(timer_manager_factory_t factory) &
Setter for timer_manager factory.
const timer_manager_factory_t & timer_manager() const
Getter for timer_manager factory.
timer_manager_factory_t m_timer_factory
Timer manager factory for environment.
An interface for environment_infrastructure entity.
Parameters for the SObjectizer Environment initialization.
environment_params_t & event_exception_logger(event_exception_logger_unique_ptr_t logger)
Set exception logger object.
bool m_autoshutdown_disabled
Is autoshutdown when there is no more cooperation disabled?
void add_layer(const std::type_index &type, layer_unique_ptr_t layer_ptr)
Add an additional layer.
bool autoshutdown_disabled() const
Is autoshutdown disabled?
environment_params_t(environment_params_t &&other)
Move constructor.
friend SO_5_FUNC void swap(environment_params_t &a, environment_params_t &b) noexcept
Swap operation.
environment_params_t & coop_listener(coop_listener_unique_ptr_t coop_listener)
Set cooperation listener object.
exception_reaction_t exception_reaction() const noexcept
Get exception reaction flag value.
environment_params_t()
Constructor.
work_thread_activity_tracking_t work_thread_activity_tracking() const
Get activity tracking flag for the whole SObjectizer Environment.
environment_params_t & operator=(environment_params_t &&other) noexcept
Move operator.
environment_params_t & timer_thread(so_5::timer_thread_factory_t factory)
Set the timer_thread factory.
exception_reaction_t m_exception_reaction
Exception reaction flag for the whole SO Environment.
work_thread_activity_tracking_t m_work_thread_activity_tracking
Work thread activity tracking for the whole Environment.
SObjectizer Environment.
disp_binder_shptr_t so_make_default_disp_binder()
Get binding to the default dispatcher.
mbox_t create_mbox()
Create an anonymous MPMC mbox.
error_logger_t & error_logger() const
Get the error_logger object.
void imp_run_layers_and_go_further()
Run layers and call next run stage.
void add_extra_layer(const std::type_index &type, const layer_ref_t &layer)
Add an additional layer.
so_5::timer_id_t so_schedule_timer(const low_level_api::schedule_timer_params_t params)
Schedule timer event.
stats::repository_t & stats_repository()
Access to repository of data sources for run-time monitoring.
void change_message_delivery_tracer_filter(so_5::msg_tracing::filter_shptr_t filter)
Change the current msg_tracing's filter to a new one.
void install_exception_logger(event_exception_logger_unique_ptr_t logger)
Set up an exception logger.
mbox_t introduce_named_mbox(mbox_namespace_name_t mbox_namespace, nonempty_name_t mbox_name, const std::function< mbox_t() > &mbox_factory)
Introduce named mbox with user-provided factory.
void run()
Run the SObjectizer Run-Time.
mchain_t create_mchain(const mchain_params_t &params)
Create message chain.
exception_reaction_t exception_reaction() const noexcept
An exception reaction for the whole SO Environment.
environment_t & self_ref()
Auxiliary methods for getting reference to itself.
coop_unique_holder_t make_coop(coop_handle_t parent)
Create a new cooperation that will be a child for specified parent coop.
so_5::disp::abstract_work_thread_factory_shptr_t work_thread_factory() const noexcept
Access to the global work thread factory.
void call_exception_logger(const std::exception &event_exception, const coop_handle_t &coop) noexcept
Call event exception logger for logging an exception.
environment_t(environment_params_t &&so_environment_params)
stats::controller_t & stats_controller()
Access to controller of run-time monitoring.
layer_t * query_layer(const std::type_index &type) const
Access to an additional layer.
void imp_run_infrastructure()
Launch environment infrastructure and wait for finish.
void imp_run_stats_controller_and_go_further()
Run controller for run-time monitoring and call next run stage.
coop_unique_holder_t make_coop()
Create a cooperation.
void stop() noexcept
Send a shutdown signal to the Run-Time.
work_thread_activity_tracking_t work_thread_activity_tracking() const
Get activity tracking flag for the whole SObjectizer Environment.
mbox_t do_make_custom_mbox(custom_mbox_details::creator_iface_t &creator)
Actual creation of a custom mbox.
void remove_stop_guard(stop_guard_shptr_t guard)
Remove stop_guard and complete the stop operation if necessary.
coop_handle_t register_coop(coop_unique_holder_t agent_coop)
Register a cooperation.
coop_unique_holder_t make_coop(disp_binder_shptr_t disp_binder)
Create a cooperation with specified dispatcher binder.
mbox_t create_mbox(nonempty_name_t mbox_name)
Create named MPMC mbox.
void so_single_timer(const low_level_api::single_timer_params_t params)
Schedule a single shot timer event.
stop_guard_t::setup_result_t setup_stop_guard(stop_guard_shptr_t guard, stop_guard_t::what_if_stop_in_progress_t reaction_on_stop_in_progress=stop_guard_t::what_if_stop_in_progress_t::throw_exception)
Set up a new stop_guard.
bool autoshutdown_disabled() const
Get autoshutdown_disabled flag.
coop_unique_holder_t make_coop(coop_handle_t parent, disp_binder_shptr_t disp_binder)
Create a new cooperation that will be a child for specified parent coop.
An interface for logging error messages.
Interface of event_queue_hook object.
An interface of event queue for agent.
The base class for all SObjectizer exceptions.
Definition exception.hpp:34
A helper class for accessing the functionality of environment-class which is specific for SObjectizer...
mbox_id_t allocate_mbox_id() noexcept
Allocate a new ID for a new custom mbox or mchain.
event_queue_t * event_queue_on_bind(agent_t *agent, event_queue_t *original_queue) noexcept
Call the event_queue_hook when an agent is being bound to a particular event_queue.
so_5::disp::mpmc_queue_traits::lock_factory_t default_mpmc_queue_lock_factory() const
Get default lock_factory for MPMC queues.
so_5::msg_tracing::holder_t & msg_tracing_stuff() const
Get access to message delivery tracer stuff holder.
subscription_storage_factory_t default_subscription_storage_factory() const noexcept(noexcept(subscription_storage_factory_t{}=subscription_storage_factory_t{}))
Get the default storage subscription factory.
environment_t & m_env
Environment instance to work with.
void event_queue_on_unbind(agent_t *agent, event_queue_t *queue) noexcept
Call the event_queue_hook when an agent is being unbound from its event_queue.
mbox_t create_ordinary_mpsc_mbox(agent_t &single_consumer)
Create multi-producer/single-consumer mbox that handles message limits.
bool is_msg_tracing_enabled() const
Is message delivery tracing enabled?
so_5::msg_tracing::holder_t & msg_tracing_stuff_nonchecked() const noexcept
Get access to message delivery tracer stuff holder.
so_5::disp::mpsc_queue_traits::lock_factory_t default_mpsc_queue_lock_factory() const
Get default lock_factory for MPSC queues.
void final_deregister_coop(coop_shptr_t coop) noexcept
Do the final actions of a cooperation deregistration.
mbox_t create_limitless_mpsc_mbox(agent_t &single_consumer)
Create multi-producer/single-consumer mbox that ignores message limits.
void ready_to_deregister_notify(coop_shptr_t coop) noexcept
Notification about readiness to the deregistration.
An utility class for working with layers.
std::mutex m_extra_layers_lock
Object lock for the extra layers data.
void shutdown_default_layers()
Shutdown default layers.
environment_t & m_env
SObjectizer Environment to work with.
layer_t * query_layer(const std::type_index &type) const
Get a layer.
void shutdown_extra_layers()
Shutdown extra layers.
so_layer_list_t m_default_layers
Default layers.
void add_extra_layer(const std::type_index &type, const layer_ref_t &layer)
Add an extra layer.
so_layer_list_t m_extra_layers
Extra layers.
void start()
Start all layers.
layer_core_t(environment_t &env, layer_map_t &&so_layers)
void wait_extra_layers()
Blocking wait for the complete shutdown of all extra layers.
void wait_default_layers()
Blocking wait for the complete shutdown of all default layers.
void finish()
Shutdown all layers and wait for full stop of them.
mbox_t create_ordinary_mpsc_mbox(environment_t &env, agent_t &owner)
Create mpsc_mbox that handles message limits.
mbox_t create_limitless_mpsc_mbox(environment_t &env, agent_t &owner)
Create mpsc_mbox that ignores message limits.
named_mboxes_dictionary_t m_named_mboxes_dictionary
Named mboxes.
mbox_t introduce_named_mbox(mbox_namespace_name_t mbox_namespace, nonempty_name_t mbox_name, const std::function< mbox_t() > &mbox_factory)
Introduce named mbox with user-provided factory.
outliving_reference_t< so_5::msg_tracing::holder_t > m_msg_tracing_stuff
Data related to message delivery tracing.
mbox_core_t(outliving_reference_t< so_5::msg_tracing::holder_t > msg_tracing_stuff)
Definition mbox_core.cpp:27
std::mutex m_dictionary_lock
Named mbox map's lock.
mbox_t create_custom_mbox(environment_t &env, ::so_5::custom_mbox_details::creator_iface_t &creator)
Create a custom mbox.
std::atomic< mbox_id_t > m_mbox_id_counter
A counter for mbox ID generation.
void destroy_mbox(const full_named_mbox_id_t &name) noexcept
Remove a reference to the named mbox.
mchain_t create_mchain(environment_t &env, const mchain_params_t &params)
Create message chain.
mbox_core_t & operator=(const mbox_core_t &)=delete
mbox_core_t(const mbox_core_t &)=delete
mbox_t create_mbox(environment_t &env)
Create local anonymous mbox.
Definition mbox_core.cpp:35
mbox_t create_mbox(environment_t &env, nonempty_name_t mbox_name)
Create local named mbox.
Definition mbox_core.cpp:46
mbox_id_t allocate_mbox_id() noexcept
Allocate an ID for a new custom mbox or mchain.
mbox_core_stats_t query_stats()
Get statistics for run-time monitoring.
status_t
Status of the stop operation.
stop_guard_t::setup_result_t setup_guard(stop_guard_shptr_t guard)
Setup new stop_guard.
stop_guard_repository_t(const stop_guard_repository_t &)=delete
action_t remove_guard(stop_guard_shptr_t guard) noexcept
Remove stop_guard.
action_t initiate_stop() noexcept
Initiate stop operation.
guards_container_t m_container_for_shutdown
Additional container to be used on shutdown operation.
action_t
Action which must be performed as result of operation on repository.
@ do_nothing
Nothing to do. Stop operation is not started.
@ do_actual_stop
Stop operation must be finished.
@ wait_for_completion
Stop operation is started but can't be finished right now.
stop_guard_repository_t(stop_guard_repository_t &&)=delete
guards_container_t m_guards
List of actual stop_guards.
status_t m_status
The current status of the stop operation.
Template class for smart reference wrapper on the atomic_refcounted_t.
An interface of the additional SObjectizer Environment layer.
Definition so_layer.hpp:31
A class for the name of mbox_namespace.
Parameters for message chain.
Definition mchain.hpp:741
friend message_mutability_t message_mutability(const intrusive_ptr_t< message_t > &what) noexcept
Helper method for safe get of message mutability flag.
Definition message.hpp:74
Interface of holder of message tracer and message trace filter objects.
Standard implementation of message tracer holder.
virtual filter_shptr_t take_filter() noexcept override
Get access to the current message trace filter object.
std_holder_t(filter_shptr_t filter, tracer_unique_ptr_t tracer)
Initializing constructor.
void change_filter(filter_shptr_t filter) noexcept
virtual bool is_msg_tracing_enabled() const noexcept override
Is message tracing enabled?
virtual tracer_t & tracer() const noexcept override
Get pointer to the message tracer object.
default_spinlock_t m_lock
A lock for protecting filter object.
Interface of tracer object.
A class for the name which cannot be empty.
A class which is like std::mutex but does not do any real actions.
null_mutex_t(null_mutex_t &&)=delete
null_mutex_t(const null_mutex_t &)=delete
Helper class for indication of long-lived reference via its type.
Definition outliving.hpp:98
A holder for data-souce that should be automatically registered and deregistered in registry.
A public interface for control SObjectizer monitoring options.
void distribute(const mbox_t &distribution_mbox) override
Send appropriate notification about the current value.
ds_agent_core_stats_t(so_5::environment_infrastructure_t &what)
so_5::environment_infrastructure_t & m_what
A data source for distributing information about mbox_core.
ds_mbox_core_stats_t(so_5::impl::mbox_core_t &what)
void distribute(const mbox_t &distribution_mbox) override
Send appropriate notification about the current value.
A data source for distributing information about timer_thread.
ds_timer_thread_stats_t(so_5::environment_infrastructure_t &what)
void distribute(const mbox_t &distribution_mbox) override
Send appropriate notification about the current value.
so_5::environment_infrastructure_t & m_what
std::condition_variable m_wake_up_cond
Condition for wake-up data-distribution thread.
const mbox_t m_mbox
Mbox for sending monitoring data.
std::chrono::steady_clock::duration m_distribution_period
Data-distribution period.
void body()
Main body of data distribution thread.
source_t * m_tail
Tail of data sources list.
std::chrono::steady_clock::duration distribute_current_data()
Initiates distribution of current values for all data sources.
std::mutex m_data_lock
Object lock for data-related operations.
std::mutex m_start_stop_lock
Object lock for start/stop operations.
virtual void add(source_t &what) override
Registration of new data source.
virtual const mbox_t & mbox() const override
Get the mbox for receiving monitoring information.
virtual void remove(source_t &what) noexcept override
Deregistration of previously registered data source.
bool m_shutdown_initiated
Shutdown signal.
virtual void turn_on() override
Turn the monitoring on.
virtual void turn_off() override
Turn the monitoring off.
std::unique_ptr< std::thread > m_distribution_thread
Main data-distribution thread.
source_t * m_head
Head of data sources list.
virtual std::chrono::steady_clock::duration set_distribution_period(std::chrono::steady_clock::duration period) override
Set distribution period.
An interface of data sources repository.
An interface of data source.
An interface of stop_guard entity.
setup_result_t
Type for result of setting up a new stop_guard.
@ ok
New stop_guard has be set successfully.
An indentificator for the timer.
Definition timers.hpp:82
#define SO_5_FUNC
Definition declspec.hpp:48
#define SO_5_THROW_EXCEPTION(error_code, desc)
Definition exception.hpp:74
so_5::subscription_storage_factory_t ensure_subscription_storage_factory_exists(subscription_storage_factory_t user_provided_factory)
Helper function for creation of the default subscription storage factory.
so_5::disp::abstract_work_thread_factory_shptr_t ensure_work_thread_factory_exists(so_5::disp::abstract_work_thread_factory_shptr_t user_provided_factory)
Helper function for creation of the default global work thread factory.
queue_locks_defaults_manager_unique_ptr_t ensure_locks_defaults_manager_exists(queue_locks_defaults_manager_unique_ptr_t current)
Helper function for creation of appropriate manager object if necessary.
event_queue_hook_unique_ptr_t ensure_event_queue_hook_exists(event_queue_hook_unique_ptr_t current)
Helper function for creation of appropriate event_queue_hook object if necessary.
Some reusable and low-level classes/functions which can be used in public header files.
Default multi-threaded environment infrastructure.
SO_5_FUNC environment_infrastructure_factory_t factory()
A factory for creation the default multitheading environment infrastructure.
Simple single-threaded environment infrastructure with thread safety.
environment_infrastructure_factory_t factory()
A factory for creation of simple thread-safe single-thread environment infrastructure object with def...
SO_5_FUNC environment_infrastructure_factory_t factory(params_t &&params)
A factory for creation of simple thread-safe single-thread environment infrastructure object.
Simple single-threaded environment infrastructure without thread safety.
SO_5_FUNC environment_infrastructure_factory_t factory(params_t &&params)
A factory for creation of simple not-thread-safe single-thread environment infrastructure object.
environment_infrastructure_factory_t factory()
A factory for creation of simple not-thread-safe single-thread environment infrastructure object with...
Various implementations of environment_infrastructure.
Details of SObjectizer run-time implementations.
Definition agent.cpp:905
void run_stage(const std::string &stage_name, Init_Fn &&init_fn, Deinit_Fn &&deinit_fn, Next_Stage &&next_stage)
Helper template function for doing initialization phase with rollback on failure.
Definition run_stage.hpp:31
std::string default_global_mbox_namespace()
Helper function that returns name of the default global namespace for named mboxes.
bool operator<(const full_named_mbox_id_t &a, const full_named_mbox_id_t &b)
Definition mbox_core.hpp:96
Implementation details of message delivery tracing mechanism.
Public part of message delivery tracing mechanism.
Internal implementation of run-time monitoring and statistics related stuff.
All stuff related to run-time monitoring and statistics.
Private part of message limit implementation.
Definition agent.cpp:33
exception_reaction_t
A reaction of SObjectizer to an exception from agent event.
Definition agent.hpp:65
@ abort_on_exception
Execution of application must be aborted immediatelly.
Definition agent.hpp:67
message_mutability_t
A enum with variants of message mutability or immutability.
Definition types.hpp:94
work_thread_activity_tracking_t
Values for dispatcher's work thread activity tracking.
Definition types.hpp:75
@ unspecified
Tracking mode is specified elsewhere.
A selector of actual lock_holder type in dependency of lock type.
Internal details of SObjectizer Environment object.
so_5::msg_tracing::impl::std_holder_t m_msg_tracing_stuff
Holder of stuff related to message delivery tracing.
const exception_reaction_t m_exception_reaction
An exception reaction for the whole SO Environment.
const bool m_autoshutdown_disabled
Is autoshutdown when there is no more cooperation disabled?
core_data_sources_t m_core_data_sources
Data sources for core objects.
impl::layer_core_t m_layer_core
An utility for layers.
event_exception_logger_unique_ptr_t m_event_exception_logger
Logger for exceptions thrown from event-handlers.
impl::mbox_core_ref_t m_mbox_core
An utility for mboxes.
impl::stop_guard_repository_t m_stop_guards
A repository of stop_guards.
environment_infrastructure_unique_ptr_t m_infrastructure
A specific infrastructure for environment.
internals_t(environment_t &env, environment_params_t &&params)
Constructor.
error_logger_shptr_t m_error_logger
Error logger object for this environment.
std::mutex m_event_exception_logger_lock
Lock object for protection of exception logger object.
event_queue_hook_unique_ptr_t m_event_queue_hook
Actual event_queue_hook.
queue_locks_defaults_manager_unique_ptr_t m_queue_locks_defaults_manager
Manager for defaults of queue locks.
work_thread_activity_tracking_t m_work_thread_activity_tracking
Work thread activity tracking for the whole Environment.
so_5::disp::abstract_work_thread_factory_shptr_t m_work_thread_factory
Actual global work thread factory.
subscription_storage_factory_t m_default_subscription_storage_factory
Factory to be used as default subscription storage factory.
Full name for a named mbox.
Definition mbox_core.hpp:69
std::string m_name
Own name of the mbox.
Definition mbox_core.hpp:83
full_named_mbox_id_t(std::string mbox_namespace, std::string mbox_name)
Initializing constructor.
Definition mbox_core.hpp:86
std::string m_namespace
Name of mbox namespace in that the mbox is defined.
Definition mbox_core.hpp:75
Statistics from mbox_core for run-time monitoring.
Definition mbox_core.hpp:49
std::size_t m_named_mbox_count
Count of named mboxes.
Definition mbox_core.hpp:51
mbox_t m_mbox
Real mbox for that name.
unsigned int m_external_ref_count
Reference count by external mbox_refs.
A special wrapper to store a layer with its type.
std::type_index m_true_type
Layer type.
bool operator<(const typed_layer_ref_t &tl) const
typed_layer_ref_t(const std::type_index &type, const layer_ref_t &layer)
layer_ref_t m_layer
Layer itself.
typed_layer_ref_t(const layer_map_t::value_type &v)
const message_ref_t & m_msg
Message to be sent after timeout.