SObjectizer  5.5
Classes | Namespaces | Functions
handler_makers.hpp File Reference

Various stuff for creation of event handlers. More...

#include <so_5/h/exception.hpp>
#include <so_5/h/ret_code.hpp>
#include <so_5/details/h/lambda_traits.hpp>
#include <so_5/rt/h/execution_demand.hpp>
#include <so_5/rt/h/message_handler_format_detector.hpp>
#include <so_5/rt/h/mbox.hpp>
#include <algorithm>

Go to the source code of this file.

Classes

struct  so_5::details::event_subscription_helpers::event_handler_arg_maker< Msg >
 A helper template for create an argument for event handler in the case when argument is passed as value or const reference. More...
 
struct  so_5::details::event_subscription_helpers::event_handler_arg_maker< mhood_t< Msg > >
 A helper template for create an argument for event handler in the case when argument is passed as message hood. More...
 
struct  so_5::details::event_subscription_helpers::event_handler_arg_maker< mhood_t< immutable_msg< Msg > > >
 A helper template for create an argument for event handler in the case when argument is passed as message hood. More...
 
struct  so_5::details::event_subscription_helpers::event_handler_arg_maker< mhood_t< mutable_msg< Msg > > >
 A helper template for create an argument for event handler in the case when argument is passed as message hood. More...
 
struct  so_5::details::event_subscription_helpers::always_false< T >
 A helper template type to trigger static_assert. More...
 
struct  so_5::details::event_subscription_helpers::event_handler_arg_maker< mutable_msg< Msg > >
 
struct  so_5::details::event_subscription_helpers::event_handler_arg_maker< immutable_msg< Msg > >
 
struct  so_5::details::handlers_bunch_basics_t
 Basic part of handlers_bunch implementation. More...
 
class  so_5::details::handlers_bunch_t< N >
 Template class for storing bunch of message handlers. More...
 
class  so_5::details::handlers_bunch_t< 0 >
 A specialization of handlers_bunch_t for the case when there is no any handlers. More...
 

Namespaces

 so_5
 Public part of message limit implementation.
 
 so_5::details
 Some reusable and low-level classes/functions which can be used in public header files.
 
 so_5::details::event_subscription_helpers
 Various helpers for event subscription.
 

Functions

template<class Agent >
Agent * so_5::details::event_subscription_helpers::get_actual_agent_pointer (agent_t &agent)
 Get actual agent pointer. More...
 
template<class Result , class Message >
msg_service_request_t< Result, typename message_payload_type< Message >::envelope_type > * so_5::details::event_subscription_helpers::get_actual_service_request_pointer (const message_ref_t &message_ref)
 Get actual msg_service_request pointer. More...
 
template<typename R , typename L >
void so_5::details::event_subscription_helpers::set_promise (std::promise< R > &to, L result_provider)
 A helper for setting a result to a promise. More...
 
template<typename L >
void so_5::details::event_subscription_helpers::set_promise (std::promise< void > &to, L result_provider)
 A helper for setting a result to a promise<void>. More...
 
template<typename Lambda , typename Result , typename Arg >
std::enable_if< !is_agent_method_pointer< Lambda >::value, msg_type_and_handler_pair_t >::type so_5::details::event_subscription_helpers::make_handler_with_arg (Lambda lambda)
 Helper template for creation of event handler with actual argument. More...
 
template<typename Agent , typename Method_Pointer >
std::enable_if< is_agent_method_pointer< Method_Pointer >::value, msg_type_and_handler_pair_t >::type so_5::details::event_subscription_helpers::make_handler_with_arg_for_agent (Agent *agent, Method_Pointer pfn)
 Helper template for creation of event handler with actual argument. More...
 
template<typename Lambda , typename Result , typename Sig >
msg_type_and_handler_pair_t so_5::details::event_subscription_helpers::make_handler_without_arg (Lambda &&lambda)
 Helper template for creation of event handler without actual argument. More...
 
void so_5::details::event_subscription_helpers::ensure_handler_can_be_used_with_mbox (const ::so_5::details::msg_type_and_handler_pair_t &handler, const ::so_5::mbox_t &target_mbox)
 Ensure that mutability of message is compatible with mutability of target mbox. More...
 
template<class Lambda >
details::msg_type_and_handler_pair_t so_5::handler (Lambda &&lambda)
 A function for creation event handler. More...
 
template<class Signal , class Lambda >
details::msg_type_and_handler_pair_t so_5::handler (Lambda &&lambda)
 A function for creation event handler. More...
 
template<typename Method_Pointer >
std::enable_if< details::is_agent_method_pointer< Method_Pointer >::value, details::msg_type_and_handler_pair_t >::type so_5::preprocess_agent_event_handler (const mbox_t &mbox, agent_t &agent, Method_Pointer pfn)
 Do preprocessing and some verification of event handler and return msg_type_and_handler_pair for it. More...
 
template<typename Lambda >
std::enable_if< details::lambda_traits::is_lambda< Lambda >::value, details::msg_type_and_handler_pair_t >::type so_5::preprocess_agent_event_handler (const mbox_t &mbox, agent_t &, Lambda &&lambda)
 Do preprocessing and some verification of event handler and return msg_type_and_handler_pair for it. More...
 
template<typename Bunch >
void so_5::details::fill_handlers_bunch (Bunch &bunch, std::size_t)
 
template<typename Bunch , typename... Others>
void so_5::details::fill_handlers_bunch (Bunch &bunch, std::size_t index, msg_type_and_handler_pair_t &&handler, Others &&... other_handlers)
 
template<typename Bunch , typename Lambda , typename... Others>
void so_5::details::fill_handlers_bunch (Bunch &bunch, std::size_t index, Lambda &&lambda, Others &&... other_handlers)
 

Detailed Description

Various stuff for creation of event handlers.

Since
v.5.5.13