SObjectizer  5.5
Classes | Namespaces | Typedefs | Functions
message.hpp File Reference

A base class for the agent messages definition. More...

#include <so_5/declspec.hpp>
#include <so_5/exception.hpp>
#include <so_5/atomic_refcounted.hpp>
#include <so_5/types.hpp>
#include <so_5/agent_ref_fwd.hpp>
#include <type_traits>
#include <typeindex>
#include <functional>
#include <future>
#include <atomic>

Go to the source code of this file.

Classes

class  so_5::message_t
 A base class for agent messages. More...
 
class  so_5::signal_t
 A base class for agent signals. More...
 
struct  so_5::user_type_message_t< T >
 Template class for representing object of user type as a message. More...
 
struct  so_5::immutable_msg< M >
 A special marker for immutable message. More...
 
struct  so_5::mutable_msg< M >
 A special marker for mutable message. More...
 
struct  so_5::details::message_mutability_traits< T >
 Detector of message type traits in dependency of message immutability or mutability. More...
 
struct  so_5::details::message_mutability_traits< immutable_msg< T > >
 
struct  so_5::details::message_mutability_traits< mutable_msg< T > >
 
struct  so_5::is_user_type_message< M >
 A helper for detection presence of message of user type. More...
 
struct  so_5::is_user_type_message< user_type_message_t< M > >
 
struct  so_5::is_signal< T >
 A helper class for checking that message is a signal. More...
 
struct  so_5::is_classical_message< T >
 A helper class for checking that message is a classical message derived from message_t class. More...
 
struct  so_5::is_mutable_message< T >
 A helper class for checking that message is a mutable message. More...
 
struct  so_5::is_mutable_message< mutable_msg< T > >
 
struct  so_5::message_payload_type_impl< T, is_classical_message >
 Implementation details for message_payload_type. More...
 
struct  so_5::message_payload_type_impl< T, false >
 Implementation details for message_payload_type. More...
 
struct  so_5::message_payload_type< T >
 A helper class for detection of payload type of message. More...
 
struct  so_5::message_payload_type< user_type_message_t< T > >
 
struct  so_5::details::make_message_instance_impl< is_signal, Msg >
 
struct  so_5::details::make_message_instance_impl< true, Msg >
 
struct  so_5::message_limit::overlimit_context_t
 Description of context for overlimit action. More...
 
struct  so_5::message_limit::control_block_t
 A control block for one message limit. 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::message_limit
 All stuff related to message limits.
 
 so_5::message_limit::impl
 Internal implementation of message limits related stuff.
 

Typedefs

using so_5::message_ref_t = intrusive_ptr_t< message_t >
 A smart reference to the message. More...
 
using so_5::message_limit::action_t = std::function< void(const overlimit_context_t &) >
 A type for reaction of message overlimit. More...
 

Functions

template<class Msg >
void so_5::ensure_not_signal ()
 A special compile-time checker to guarantee that the message class is not a signal class. More...
 
template<class Msg >
void so_5::ensure_message_with_actual_data (const Msg *m)
 A special checker to guarantee that the message is an instance of the message_t (not signal_t) and has a not-null pointer to the message data. More...
 
template<class S >
void so_5::ensure_not_mutable_signal ()
 A special compile-time checker to guarantee that S is not a mutable signal. More...
 
template<class Msg >
void so_5::ensure_signal ()
 A special compile-time checker to guarantee that the Msg is derived from the signal_t. More...
 
template<typename Msg >
void so_5::ensure_classical_message ()
 A special compile-time checker to guarantee that Msg is derived from message_t. More...
 
template<typename Msg >
std::enable_if< message_mutability_t::mutable_message==::so_5::details::message_mutability_traits< Msg >::mutability >::type so_5::details::mark_as_mutable_if_necessary (message_t &msg)
 
template<typename Msg >
std::enable_if< message_mutability_t::mutable_message==::so_5::details::message_mutability_traits< Msg >::mutability >::type so_5::details::mark_as_mutable_if_necessary (message_ref_t &msg)
 
template<typename Msg >
std::enable_if< message_mutability_t::mutable_message !=::so_5::details::message_mutability_traits< Msg >::mutability >::type so_5::details::mark_as_mutable_if_necessary (message_t &)
 
template<typename Msg >
std::enable_if< message_mutability_t::mutable_message !=::so_5::details::message_mutability_traits< Msg >::mutability >::type so_5::details::mark_as_mutable_if_necessary (message_ref_t &)
 
template<typename Msg , typename... Args>
auto so_5::details::make_message_instance (Args &&... args) -> std::unique_ptr< typename message_payload_type< Msg >::envelope_type >
 A helper for allocate instance of a message. More...
 

Detailed Description

A base class for the agent messages definition.