SObjectizer
5.5
|
Internal implementation of message limits related stuff. More...
Namespaces | |
Classes | |
class | action_msg_tracer_t |
An interface of tracer for message delivery tracing. More... | |
struct | call_pre_abort_action |
Helper class for calling pre-abort action. More... | |
struct | call_pre_abort_action_impl |
Helper class for calling pre-abort action. More... | |
struct | call_pre_abort_action_impl< false, M, L > |
Specialization for the case of signal. More... | |
struct | info_block_t |
Run-time data for limit of one message type. More... | |
class | info_storage_t |
A storage for message limits for one agent. More... | |
struct | transformed_message_maker |
A helper function to call appropriate constructor of resulting type in dependence of message or signal. More... | |
struct | transformed_message_maker< true, Result, Msg > |
A specialization of signal. More... | |
Typedefs | |
using | info_block_container_t = std::vector< info_block_t > |
Type of container for limits' run-time data. More... | |
Functions | |
SO_5_FUNC void | drop_message_reaction (const overlimit_context_t &ctx) |
Actual implementation of drop message reaction. More... | |
SO_5_FUNC void | abort_app_reaction (const overlimit_context_t &ctx) |
Actual implementation of abort application reaction. More... | |
SO_5_FUNC void | redirect_reaction ( const overlimit_context_t &ctx, const mbox_t &to) |
Actual implementation of redirect message reaction. More... | |
SO_5_FUNC void | ensure_event_transform_reaction ( invocation_type_t invocation_type, const overlimit_context_t &ctx) |
Checks that service request will not be transformed. More... | |
SO_5_FUNC void | transform_reaction ( const overlimit_context_t &ctx, const mbox_t &to, const std::type_index &msg_type, const message_ref_t &message) |
Actual implementation of transform reaction. More... | |
template<typename Lambda > | |
void | try_to_deliver_to_agent (mbox_id_t mbox_id, invocation_type_t invocation_type, const agent_t &receiver, const control_block_t *limit, const std::type_index &msg_type, const message_ref_t &what_to_deliver, unsigned int overlimit_reaction_deep, const message_limit::impl::action_msg_tracer_t *tracer, Lambda delivery_action) |
A helper function for pushing a message or a service request to agent with respect to message limit. More... | |
Variables | |
const unsigned int | max_overlimit_reaction_deep = 32 |
Maximum overlimit reaction deep. More... | |
Internal implementation of message limits related stuff.
using so_5::message_limit::impl::info_block_container_t = typedef std::vector< info_block_t > |
Type of container for limits' run-time data.
SO_5_FUNC void so_5::message_limit::impl::abort_app_reaction | ( | const overlimit_context_t & | ctx | ) |
Actual implementation of abort application reaction.
SO_5_FUNC void so_5::message_limit::impl::drop_message_reaction | ( | const overlimit_context_t & | ctx | ) |
Actual implementation of drop message reaction.
SO_5_FUNC void so_5::message_limit::impl::ensure_event_transform_reaction | ( | invocation_type_t | invocation_type, |
const overlimit_context_t & | ctx | ||
) |
Checks that service request will not be transformed.
invocation_type | Invocation type to be checked. |
ctx | Context on which overlimit must be handled. This context is necessary to make description for exception to be thrown. |
SO_5_FUNC void so_5::message_limit::impl::redirect_reaction | ( | const overlimit_context_t & | ctx, |
const mbox_t & | to | ||
) |
Actual implementation of redirect message reaction.
ctx | Context on which overlimit must be handled. |
to | Destination for message redirection. |
SO_5_FUNC void so_5::message_limit::impl::transform_reaction | ( | const overlimit_context_t & | ctx, |
const mbox_t & | to, | ||
const std::type_index & | msg_type, | ||
const message_ref_t & | message | ||
) |
Actual implementation of transform reaction.
ctx | Context on which overlimit must be handled. |
to | Destination for new message. |
msg_type | Type of new message. |
message | An instance of new message. |
void so_5::message_limit::impl::try_to_deliver_to_agent | ( | mbox_id_t | mbox_id, |
invocation_type_t | invocation_type, | ||
const agent_t & | receiver, | ||
const control_block_t * | limit, | ||
const std::type_index & | msg_type, | ||
const message_ref_t & | what_to_deliver, | ||
unsigned int | overlimit_reaction_deep, | ||
const message_limit::impl::action_msg_tracer_t * | tracer, | ||
Lambda | delivery_action | ||
) |
A helper function for pushing a message or a service request to agent with respect to message limit.
Lambda | lambda-function to do actual pushing. |
mbox_id | Mbox that is used for message delivery. Added in v.5.5.23 for support of enveloped messages. |
invocation_type | It is a message or service request? |
receiver | Receiver of the message or service request. |
limit | Optional message limit. Value nullptr means that there is no message limit to control. |
msg_type | Type of message to be delivered. |
what_to_deliver | Message instance to be delivered. |
overlimit_reaction_deep | Deep of overlimit reactions recursion. |
tracer | Message delivery tracer to be used inside overlimit reaction. |
delivery_action | Actual delivery action. |
const unsigned int so_5::message_limit::impl::max_overlimit_reaction_deep = 32 |
Maximum overlimit reaction deep.