SObjectizer-5 Extra
Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base > Class Template Referencefinal

Actual implementation of collecting mbox. More...

#include <collecting_mbox.hpp>

Inheritance diagram for so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >:

Public Member Functions

template<typename... Size_Specific_Base_Args, typename... Tracing_Base_Args>
 actual_mbox_t (mbox_id_t mbox_id, std::tuple< Size_Specific_Base_Args... > &&size_specific_base_args, std::tuple< Tracing_Base_Args... > &&tracing_base_args)
 A public constructor. More...
 
mbox_id_t id () const override
 
void subscribe_event_handler (const std::type_index &, const so_5::message_limit::control_block_t *, agent_t &) override
 
void unsubscribe_event_handlers (const std::type_index &, agent_t &) override
 
std::string query_name () const override
 
mbox_type_t type () const override
 
void do_deliver_message (const std::type_index &msg_type, const message_ref_t &message, unsigned int overlimit_reaction_deep) override
 
void set_delivery_filter (const std::type_index &, const delivery_filter_t &, agent_t &) override
 
void drop_delivery_filter (const std::type_index &, agent_t &) noexcept override
 
so_5::environment_t & environment () const noexcept override
 

Private Types

using size_specific_base_type = typename traits_t< Config_Type >::size_specific_base_type
 Short alias for base type which is depended on consexpr or runtime size. More...
 
using tracing_base_type = Tracing_Base
 Short alias for base type which is depended on msg_tracing facilities. More...
 
using messages_collected_t = ::so_5::extra::mboxes::collecting_mbox::details::messages_collected_t< Config_Type >
 Alias for actual message which will be sent when all messages or signals are collected. More...
 
using messages_collected_builder_t = typename collected_bunch_type_selector< Config_Type >::builder_type
 Alias for builder of message_collected. More...
 
using collecting_message_subscription_type = typename message_payload_type< collecting_msg_t< Config_Type > >::subscription_type
 Alias for type which should be used for subscription to collecting messages. More...
 
using messages_collected_subscription_type = typename std::conditional< is_mutable_message< collecting_msg_t< Config_Type > >::value, mutable_msg< messages_collected_t >, messages_collected_t > ::type
 Alias for type which should be used for subscription to message_collected message. More...
 

Private Member Functions

template<typename Specific_Base_Type_Tuple , std::size_t... Specific_Base_Type_Indexes, typename Tracing_Base_Type_Tuple , std::size_t... Tracing_Base_Type_Indexes>
 actual_mbox_t (mbox_id_t mbox_id, Specific_Base_Type_Tuple &&specific_base_type_args, std::index_sequence< Specific_Base_Type_Indexes... >, Tracing_Base_Type_Tuple &&tracing_base_type_args, std::index_sequence< Tracing_Base_Type_Indexes... >)
 
void collect_new_message (typename Tracing_Base::deliver_op_tracer const &tracer, const message_ref_t &message)
 

Static Private Member Functions

static void ensure_valid_message_type (const std::type_index &msg_type_id)
 

Private Attributes

messages_collected_builder_t m_msg_builder
 The current instance of messages_collected to store messages to be delivered. More...
 

Detailed Description

template<typename Config_Type, typename Tracing_Base>
class so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >

Actual implementation of collecting mbox.

Template Parameters
Config_Typea type with enumeration of all necessary type traits. It is expected to be config_type with appropriate type parameters.
Tracing_Basebase class with implementation of message delivery tracing methods. Expected to be tracing_enabled_base or tracing_disabled_base from so_5::impl::msg_tracing_helpers namespace.

Definition at line 549 of file collecting_mbox.hpp.

Member Typedef Documentation

◆ collecting_message_subscription_type

template<typename Config_Type , typename Tracing_Base >
using so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::collecting_message_subscription_type = typename message_payload_type< collecting_msg_t<Config_Type> >::subscription_type
private

Alias for type which should be used for subscription to collecting messages.

Definition at line 577 of file collecting_mbox.hpp.

◆ messages_collected_builder_t

template<typename Config_Type , typename Tracing_Base >
using so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::messages_collected_builder_t = typename collected_bunch_type_selector<Config_Type>::builder_type
private

Alias for builder of message_collected.

Definition at line 571 of file collecting_mbox.hpp.

◆ messages_collected_subscription_type

template<typename Config_Type , typename Tracing_Base >
using so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::messages_collected_subscription_type = typename std::conditional< is_mutable_message< collecting_msg_t<Config_Type> >::value, mutable_msg< messages_collected_t >, messages_collected_t > ::type
private

Alias for type which should be used for subscription to message_collected message.

Definition at line 586 of file collecting_mbox.hpp.

◆ messages_collected_t

template<typename Config_Type , typename Tracing_Base >
using so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::messages_collected_t = ::so_5::extra::mboxes::collecting_mbox::details:: messages_collected_t<Config_Type>
private

Alias for actual message which will be sent when all messages or signals are collected.

Definition at line 567 of file collecting_mbox.hpp.

◆ size_specific_base_type

template<typename Config_Type , typename Tracing_Base >
using so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::size_specific_base_type = typename traits_t<Config_Type>::size_specific_base_type
private

Short alias for base type which is depended on consexpr or runtime size.

Definition at line 558 of file collecting_mbox.hpp.

◆ tracing_base_type

template<typename Config_Type , typename Tracing_Base >
using so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::tracing_base_type = Tracing_Base
private

Short alias for base type which is depended on msg_tracing facilities.

Definition at line 562 of file collecting_mbox.hpp.

Constructor & Destructor Documentation

◆ actual_mbox_t() [1/2]

template<typename Config_Type , typename Tracing_Base >
template<typename Specific_Base_Type_Tuple , std::size_t... Specific_Base_Type_Indexes, typename Tracing_Base_Type_Tuple , std::size_t... Tracing_Base_Type_Indexes>
so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::actual_mbox_t ( mbox_id_t  mbox_id,
Specific_Base_Type_Tuple &&  specific_base_type_args,
std::index_sequence< Specific_Base_Type_Indexes... >  ,
Tracing_Base_Type_Tuple &&  tracing_base_type_args,
std::index_sequence< Tracing_Base_Type_Indexes... >   
)
inlineprivate

Definition at line 594 of file collecting_mbox.hpp.

◆ actual_mbox_t() [2/2]

template<typename Config_Type , typename Tracing_Base >
template<typename... Size_Specific_Base_Args, typename... Tracing_Base_Args>
so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::actual_mbox_t ( mbox_id_t  mbox_id,
std::tuple< Size_Specific_Base_Args... > &&  size_specific_base_args,
std::tuple< Tracing_Base_Args... > &&  tracing_base_args 
)
inline

A public constructor.

Receives two tuples: one for parameters for size_specific_base_type's constructor and another for parameters for tracing_base_type's constructor.

Template Parameters
Size_Specific_Base_Argslist of types for parameters for size_specific_base_type's constructor.
Tracing_Base_Argslist of types for parameters for tracing_base_type's constructor. Note: this can be an empty list.
Parameters
mbox_idUnique ID for that mbox.
size_specific_base_argsParameters related to constexpr or runtime size.
tracing_base_argsParameters related to msg_tracing facilities. Note: this can be an empty tuple.

Definition at line 630 of file collecting_mbox.hpp.

Member Function Documentation

◆ collect_new_message()

template<typename Config_Type , typename Tracing_Base >
void so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::collect_new_message ( typename Tracing_Base::deliver_op_tracer const &  tracer,
const message_ref_t &  message 
)
inlineprivate

Definition at line 748 of file collecting_mbox.hpp.

◆ do_deliver_message()

template<typename Config_Type , typename Tracing_Base >
void so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::do_deliver_message ( const std::type_index &  msg_type,
const message_ref_t &  message,
unsigned int  overlimit_reaction_deep 
)
inlineoverride

Definition at line 686 of file collecting_mbox.hpp.

◆ drop_delivery_filter()

template<typename Config_Type , typename Tracing_Base >
void so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::drop_delivery_filter ( const std::type_index &  ,
agent_t &   
)
inlineoverridenoexcept

Definition at line 714 of file collecting_mbox.hpp.

◆ ensure_valid_message_type()

template<typename Config_Type , typename Tracing_Base >
static void so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::ensure_valid_message_type ( const std::type_index &  msg_type_id)
inlinestaticprivate

Definition at line 733 of file collecting_mbox.hpp.

◆ environment()

template<typename Config_Type , typename Tracing_Base >
so_5::environment_t& so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::environment ( ) const
inlineoverridenoexcept

Definition at line 722 of file collecting_mbox.hpp.

◆ id()

template<typename Config_Type , typename Tracing_Base >
mbox_id_t so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::id ( ) const
inlineoverride

Definition at line 647 of file collecting_mbox.hpp.

◆ query_name()

template<typename Config_Type , typename Tracing_Base >
std::string so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::query_name ( ) const
inlineoverride

Definition at line 671 of file collecting_mbox.hpp.

◆ set_delivery_filter()

template<typename Config_Type , typename Tracing_Base >
void so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::set_delivery_filter ( const std::type_index &  ,
const delivery_filter_t &  ,
agent_t &   
)
inlineoverride

Definition at line 703 of file collecting_mbox.hpp.

◆ subscribe_event_handler()

template<typename Config_Type , typename Tracing_Base >
void so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::subscribe_event_handler ( const std::type_index &  ,
const so_5::message_limit::control_block_t *  ,
agent_t &   
)
inlineoverride

Definition at line 653 of file collecting_mbox.hpp.

◆ type()

template<typename Config_Type , typename Tracing_Base >
mbox_type_t so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::type ( ) const
inlineoverride

Definition at line 680 of file collecting_mbox.hpp.

◆ unsubscribe_event_handlers()

template<typename Config_Type , typename Tracing_Base >
void so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::unsubscribe_event_handlers ( const std::type_index &  ,
agent_t &   
)
inlineoverride

Definition at line 664 of file collecting_mbox.hpp.

Member Data Documentation

◆ m_msg_builder

template<typename Config_Type , typename Tracing_Base >
messages_collected_builder_t so_5::extra::mboxes::collecting_mbox::details::actual_mbox_t< Config_Type, Tracing_Base >::m_msg_builder
private

The current instance of messages_collected to store messages to be delivered.

Definition at line 730 of file collecting_mbox.hpp.


The documentation for this class was generated from the following file: