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

Implementation of free functions send/send_delayed. More...

#include <so_5/rt/h/environment.hpp>
#include <so_5/h/compiler_features.hpp>

Go to the source code of this file.

Classes

struct  so_5::impl::instantiator_and_sender_base< Message, Is_Signal >
 
struct  so_5::impl::instantiator_and_sender_base< Message, true >
 
struct  so_5::impl::instantiator_and_sender< Message >
 

Namespaces

 so_5
 Public part of message limit implementation.
 
 so_5::impl
 Details of SObjectizer run-time implementations.
 
 so_5::send_functions_details
 Implementation details for send-family and request_future/value helper functions.
 

Functions

const so_5::mbox_tso_5::send_functions_details::arg_to_mbox (const so_5::mbox_t &mbox)
 
const so_5::mbox_tso_5::send_functions_details::arg_to_mbox (const so_5::agent_t &agent)
 
const so_5::mbox_tso_5::send_functions_details::arg_to_mbox (const so_5::adhoc_agent_definition_proxy_t &agent)
 
so_5::mbox_t so_5::send_functions_details::arg_to_mbox (const so_5::mchain_t &chain)
 
so_5::environment_tso_5::send_functions_details::arg_to_env (const so_5::agent_t &agent)
 
so_5::environment_tso_5::send_functions_details::arg_to_env (const so_5::adhoc_agent_definition_proxy_t &agent)
 
so_5::environment_tso_5::send_functions_details::arg_to_env (const so_5::mchain_t &chain)
 
template<typename Message , typename Target , typename... Args>
void so_5::send (Target &&to, Args &&... args)
 A utility function for creating and delivering a message or a signal. More...
 
template<typename Target , typename Message >
std::enable_if< !is_signal< Message >::value >::type so_5::send (Target &&to, mhood_t< Message > what)
 A version of send function for redirection of a message from exising message hood. More...
 
template<typename Target , typename Message >
std::enable_if< is_signal< Message >::value >::type so_5::send (Target &&to, mhood_t< Message >)
 A version of send function for redirection of a signal from exising message hood. More...
 
template<typename Message , typename... Args>
void so_5::send_to_agent (const so_5::agent_t &receiver, Args &&... args)
 A utility function for creating and delivering a message to the agent's direct mbox. More...
 
template<typename Message , typename... Args>
void so_5::send_to_agent (const so_5::adhoc_agent_definition_proxy_t &receiver, Args &&... args)
 A utility function for creating and delivering a message to the ad-hoc agent's direct mbox. More...
 
template<typename Message , typename... Args>
void so_5::send_delayed (so_5::environment_t &env, const so_5::mbox_t &to, std::chrono::steady_clock::duration pause, Args &&... args)
 A utility function for creating and delivering a delayed message. More...
 
template<typename Message , typename Target , typename... Args>
void so_5::send_delayed (Target &&target, std::chrono::steady_clock::duration pause, Args &&... args)
 A utility function for creating and delivering a delayed message to the specified destination. More...
 
template<typename Message , typename... Args>
void so_5::send_delayed (so_5::agent_t &agent, const so_5::mbox_t &to, std::chrono::steady_clock::duration pause, Args &&... args)
 A utility function for creating and delivering a delayed message. More...
 
template<typename Message >
std::enable_if< !message_payload_type< Message >::is_signal >::type so_5::send_delayed (so_5::environment_t &env, const so_5::mbox_t &to, std::chrono::steady_clock::duration pause, mhood_t< Message > msg)
 A utility function for delayed redirection of a message from existing message hood. More...
 
template<typename Message >
std::enable_if< message_payload_type< Message >::is_signal >::type so_5::send_delayed (so_5::environment_t &env, const so_5::mbox_t &to, std::chrono::steady_clock::duration pause, mhood_t< Message >)
 A utility function for delayed redirection of a signal from existing message hood. More...
 
template<typename Message , typename... Args>
void so_5::send_delayed_to_agent (so_5::agent_t &agent, std::chrono::steady_clock::duration pause, Args &&... args)
 A utility function for creating and delivering a delayed message to the agent's direct mbox. More...
 
template<typename Target , typename Message >
void so_5::send_delayed (Target &&target, std::chrono::steady_clock::duration pause, mhood_t< Message > mhood)
 A helper function for redirection of a message/signal as a delayed message/signal. More...
 
template<typename Message , typename... Args>
void so_5::send_delayed_to_agent (const so_5::adhoc_agent_definition_proxy_t &agent, std::chrono::steady_clock::duration pause, Args &&... args)
 A utility function for creating and delivering a delayed message to the ad-hoc agent's direct mbox. More...
 
template<typename Message , typename... Args>
SO_5_NODISCARD timer_id_t so_5::send_periodic (so_5::environment_t &env, const so_5::mbox_t &to, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period, Args &&... args)
 A utility function for creating and delivering a periodic message. More...
 
template<typename Message , typename... Args>
SO_5_NODISCARD timer_id_t so_5::send_periodic (so_5::agent_t &agent, const so_5::mbox_t &to, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period, Args &&... args)
 A utility function for creating and delivering a periodic message. More...
 
template<typename Message , typename Target , typename... Args>
SO_5_NODISCARD timer_id_t so_5::send_periodic (Target &&target, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period, Args &&... args)
 A utility function for creating and delivering a periodic message to the specified destination. More...
 
template<typename Message >
SO_5_NODISCARD std::enable_if< !is_signal< Message >::value, timer_id_t >::type so_5::send_periodic (so_5::environment_t &env, const so_5::mbox_t &to, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period, mhood_t< Message > mhood)
 A utility function for delivering a periodic from an existing message hood. More...
 
template<typename Message >
SO_5_NODISCARD std::enable_if< is_signal< Message >::value, timer_id_t >::type so_5::send_periodic (so_5::environment_t &env, const so_5::mbox_t &to, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period, mhood_t< Message >)
 A utility function for periodic redirection of a signal from existing message hood. More...
 
template<typename Target , typename Message >
SO_5_NODISCARD timer_id_t so_5::send_periodic (Target &&target, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period, mhood_t< Message > mhood)
 A helper function for redirection of a message/signal as a periodic message/signal. More...
 
template<typename Message , typename... Args>
SO_5_NODISCARD timer_id_t so_5::send_periodic_to_agent (so_5::agent_t &agent, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period, Args &&... args)
 A utility function for creating and delivering a periodic message to the agent's direct mbox. More...
 
template<typename Message , typename... Args>
SO_5_NODISCARD timer_id_t so_5::send_periodic_to_agent (const so_5::adhoc_agent_definition_proxy_t &agent, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period, Args &&... args)
 A utility function for creating and delivering a periodic message to the agent's direct mbox. More...
 
Helper functions for simplification of synchronous interactions.
template<typename Result , typename Msg , typename Target , typename... Args>
std::future< Result > so_5::request_future (Target &&who, Args &&... args)
 Make a synchronous request and receive result in form of a future object. Intended to use with messages. More...
 
template<typename Result , typename Msg , typename Target >
std::enable_if< !is_signal< Msg >::value, std::future< Result > >::type so_5::request_future (Target &&who, mhood_t< Msg > mhood)
 A version of request_future function for initiating of a synchonous request from exising message hood. More...
 
template<typename Result , typename Msg , typename Target >
std::enable_if< is_signal< Msg >::value, std::future< Result > >::type so_5::request_future (Target &&who, mhood_t< Msg >)
 A version of request_future function for initiating of a synchonous request from exising message hood. More...
 
template<typename Result , typename Signal , typename Target , typename Future_Type = typename std::enable_if< so_5::is_signal< Signal >::value, std::future< Result > >::type>
Future_Type so_5::request_future (Target &&who)
 Make a synchronous request and receive result in form of a future object. Intended to use with signals. More...
 
template<typename Result , typename Msg , typename Target , typename Duration , typename... Args>
Result so_5::request_value (Target &&who, Duration timeout, Args &&... args)
 Make a synchronous request and receive result in form of a value with waiting for some time. Intended to use with messages. More...
 
template<typename Result , typename Target , typename Duration , typename Msg >
std::enable_if< !so_5::is_signal< Msg >::value, Result >::type so_5::request_value (Target &&who, Duration timeout, mhood_t< Msg > mhood)
 A version of request_value function for initiating of a synchonous request from exising message hood. More...
 
template<typename Result , typename Signal , typename Target , typename Duration , typename Result_Type = typename std::enable_if< so_5::is_signal< Signal >::value, Result >::type>
Result_Type so_5::request_value (Target &&who, Duration timeout)
 Make a synchronous request and receive result in form of a value with waiting for some time. Intended to use with signals. More...
 
template<typename Result , typename Target , typename Duration , typename Msg >
std::enable_if< so_5::is_signal< Msg >::value, Result >::type so_5::request_value (Target &&who, Duration timeout, mhood_t< Msg >)
 A version of request_value function for initiating of a synchonous request from exising message hood. More...
 

Detailed Description

Implementation of free functions send/send_delayed.

Since
v.5.5.1