10 #include <so_5_extra/mboxes/proxy.hpp> 12 #include <so_5_extra/error_ranges.hpp> 14 #include <so_5_extra/enveloped_msg/just_envelope.hpp> 16 #include <so_5/impl/msg_tracing_helpers.hpp> 18 #include <so_5/environment.hpp> 31 using underlying_counter_t =
unsigned int;
35 namespace impl::msg_tracing_helpers::
details {
49 s <<
"[inflight_limit=" << info.m_limit <<
",inflight_current=" 50 << info.m_current_number <<
"]";
155 outliving_reference_t< instances_counter_t > counter )
noexcept 162 if( m_should_decrement_in_destructor )
163 (m_counter.m_instances)--;
190 class special_envelope_t
final :
public so_5::extra::enveloped_msg::just_envelope_t
192 using base_type_t = so_5::extra::enveloped_msg::just_envelope_t;
199 message_ref_t payload,
200 instances_counter_shptr_t counter )
209 (m_counter->m_instances)--;
232 value()
const noexcept {
return m_value; }
245 SO_5_THROW_EXCEPTION(
246 errors::rc_nullptr_as_underlying_mbox,
247 "nullptr is used as underlying mbox" );
249 return { std::move(mbox) };
260 template<
typename Tracing_Base >
263 ,
private Tracing_Base
287 template<
typename... Tracing_Args >
292 std::type_index msg_type,
294 underlying_counter_t limit,
296 Tracing_Args &&... args )
312 const std::type_index & msg_type,
313 const ::so_5::message_limit::control_block_t * limit,
314 ::so_5::agent_t & subscriber )
override 318 "an attempt to subscribe with different message type" );
326 const std::type_index & msg_type,
327 ::so_5::agent_t & subscriber )
override 331 "an attempt to drop subscription for different message type" );
351 const std::type_index & msg_type,
352 const ::so_5::message_ref_t & message,
353 unsigned int overlimit_reaction_deep )
override 357 "an attempt to deliver message of a different message type" );
396 "too_many_inflight_messages",
403 const std::type_index & msg_type,
404 const ::so_5::delivery_filter_t & filter,
405 ::so_5::agent_t & subscriber )
override 409 "an attempt to set delivery_filter for different " 420 const std::type_index & msg_type,
421 ::so_5::agent_t & subscriber )
noexcept override 445 const std::type_index & msg_type,
446 std::string_view error_description )
const 466 template<
typename Msg_Type >
470 const so_5::mbox_t & underlying_mbox )
480 "an attempt to make MPMC mbox for mutable message, " 522 template<
typename Msg_Type >
Ranges for error codes of each submodules.