11 #include <so_5_extra/error_ranges.hpp> 13 #include <so_5/rt/impl/h/agent_ptr_compare.hpp> 14 #include <so_5/rt/impl/h/message_limit_internals.hpp> 15 #include <so_5/rt/impl/h/msg_tracing_helpers.hpp> 17 #include <so_5/details/h/sync_helpers.hpp> 19 #include <so_5/rt/h/mbox.hpp> 99 using traits_type = Traits;
100 using lock_type = Lock_Type;
107 template<
typename Config_Type >
108 using traits_t =
typename Config_Type::traits_type;
110 template<
typename Config_Type >
111 using lock_t =
typename Config_Type::lock_type;
158 const so_5::message_limit::control_block_t * limit )
167 const delivery_filter_t * filter )
193 set_limit(
const message_limit::control_block_t * limit )
245 auto need_deliver = delivery_possibility_t::must_be_delivered;
247 if( state_t::only_filter == m_state )
250 need_deliver = delivery_possibility_t::no_subscription;
251 else if( state_t::subscriptions_and_filter == m_state )
253 need_deliver = m_filter->check( subscriber, msg ) ?
254 delivery_possibility_t::must_be_delivered :
255 delivery_possibility_t::disabled_by_delivery_filter;
284 return ::so_5::impl::special_agent_ptr_compare( *a, *b );
347 invocation_type_t result = invocation_type_t::event;
348 switch( message_kind(msg) )
350 case message_t::kind_t::signal:
break;
351 case message_t::kind_t::classical_message:
break;
352 case message_t::kind_t::user_type_message:
break;
353 case message_t::kind_t::service_request:
354 result = invocation_type_t::service_request;
357 case message_t::kind_t::enveloped_msg:
358 result = invocation_type_t::enveloped_msg;
382 typename Tracing_Base >
385 ,
private Tracing_Base
394 template<
typename... Tracing_Args >
399 Tracing_Args &&... args )
412 const std::type_index & msg_type,
413 const so_5::message_limit::control_block_t * limit,
414 agent_t * subscriber )
override 429 const std::type_index & msg_type,
430 agent_t * subscriber )
override 444 s <<
"<mbox:type=RETAINED_MPMC:id=" <<
this->
m_data.
m_id <<
">";
457 const std::type_index & msg_type,
458 const message_ref_t & message,
459 unsigned int overlimit_reaction_deep )
const override 479 const std::type_index & msg_type,
480 const message_ref_t & message,
481 unsigned int overlimit_reaction_deep )
const override 488 std::
string(
"service request cannot be performed " 489 "on retained_msg mboxes" 497 "deliver_service_request",
512 const std::type_index & msg_type,
513 const message_ref_t & message,
514 unsigned int overlimit_reaction_deep )
override 519 "deliver_enveloped_msg",
534 const std::type_index & msg_type,
535 const delivery_filter_t & filter,
536 agent_t & subscriber )
override 551 const std::type_index & msg_type,
552 agent_t & subscriber )
noexcept override 579 template<
typename Info_Maker,
typename Info_Changer >
582 const std::type_index & msg_type,
583 agent_t * subscriber,
585 Info_Changer changer )
613 template<
typename Info_Changer >
616 const std::type_index & msg_type,
617 agent_t * subscriber,
618 Info_Changer changer )
644 typename Tracing_Base::deliver_op_tracer
const & tracer,
645 invocation_type_t invocation_type,
646 const std::type_index & msg_type,
647 const message_ref_t & message,
648 unsigned int overlimit_reaction_deep )
const 676 agent_t & subscriber,
678 typename Tracing_Base::deliver_op_tracer
const & tracer,
679 invocation_type_t invocation_type,
680 const std::type_index & msg_type,
681 const message_ref_t & message,
682 unsigned int overlimit_reaction_deep )
const 720 typename Tracing_Base::deliver_op_tracer
const & tracer,
721 const std::type_index & msg_type,
722 const message_ref_t & message,
723 unsigned int overlimit_reaction_deep )
const 739 "no service handlers (no subscribers " 740 "for message), msg_type: " )
752 "no service handlers (no subscribers " 753 "for message), msg_type: " )
760 "more than one service handler found" 778 agent_t & subscriber,
780 typename Tracing_Base::deliver_op_tracer
const & tracer,
781 const std::type_index & msg_type,
782 const message_ref_t & message,
783 unsigned int overlimit_reaction_deep )
const 826 std::
string(
"no service handlers (no subscribers " 827 "for message or subscriber is blocked by " 828 "delivery filter), msg_type: " )
840 const std::type_index & msg_type,
841 const message_ref_t & retained_msg,
842 agent_t & subscriber,
852 "deliver_message_on_subscription",
876 const std::type_index & msg_type,
877 const message_ref_t & what )
const 883 "an attempt to deliver mutable message via MPMC mbox" 1011 typename Traits = default_traits_t,
Ranges for error codes of each submodules.