2
3
6
7
8
9
10
14#include <so_5/fwd.hpp>
23
24
25
26
27
28
29
36 using ptr_comparator_t = std::less<
const agent_t * >;
43 return ( p1 > p2 || (p1 == p2 && ptr_comparator_t{}( &a, &b ) ) );
void so_initiate_agent_definition()
A correct initiation of so_define_agent method call.
void shutdown_agent() noexcept
Agent shutdown deriver.
void bind_to_coop(coop_t &coop)
Bind agent to the cooperation.
priority_t so_priority() const noexcept
Get the priority of the agent.
Container for cooperation deregistration notificators.
void call_all(environment_t &env, const coop_handle_t &coop, const coop_dereg_reason_t &reason) const noexcept
Call all notificators.
It's a kind of strong typedef for coop's deregistration reason.
Type of smart handle for a cooperation.
Container for cooperation registration notificators.
void call_all(environment_t &env, const coop_handle_t &coop) const noexcept
Call all notificators.
environment_t & environment() const noexcept
Access to SO Environment for which cooperation is bound.
registration_status_t m_registration_status
The registration status of cooperation.
void decrement_usage_count() noexcept
Decrement usage count for the coop.
void deregister(int reason) noexcept
Deregister the cooperation with the specified reason.
exception_reaction_t m_exception_reaction
A reaction to non-handled exception.
registration_status_t
Registration status.
@ deregistration_in_final_stage
Deregistration of the coop is in the final stage.
@ coop_registered
Cooperation is registered.
@ coop_deregistering
Cooperation is in deregistration process.
coop_dereg_reason_t m_dereg_reason
Deregistration reason.
void increment_usage_count() noexcept
Increment usage count for the coop.
Interface for dispatcher binders.
exception_reaction_t exception_reaction() const noexcept
An exception reaction for the whole SO Environment.
The base class for all SObjectizer exceptions.
An internal class with real implementation of coop's logic.
static void destroy_content(coop_t &coop) noexcept
Perform all necessary cleanup actions for coop.
static void do_final_deregistration_actions(coop_t &coop)
Perform final deregistration actions for an coop.
static exception_reaction_t exception_reaction(const coop_t &coop) noexcept
Get exception reaction for coop.
static void do_remove_child(coop_t &parent, coop_t &child) noexcept
Perform removement of a child coop.
static void do_decrement_reference_count(coop_t &coop) noexcept
Do decrement reference count for a coop.
static void do_deregistration_specific_actions(coop_t &coop, coop_dereg_reason_t reason) noexcept
Perform actions related to the deregistration of coop.
static void do_registration_specific_actions(coop_t &coop)
Perform actions related to the registration of coop.
static void do_add_agent(coop_t &coop, agent_ref_t agent_ref)
Add agent to cooperation.
internal_agent_iface_t(agent_t &agent) noexcept
void shutdown_agent() noexcept
disp_binder_t & query_disp_binder() const
Getter for disp_binder.
void bind_to_coop(coop_t &coop)
void drop_disp_binder() noexcept
Helper method that drops pointer to disp_binder.
void initiate_agent_definition()
void set_disp_binder(disp_binder_shptr_t binder)
Setter for disp_binder.
A helper class for accessing the functionality of environment-class which is specific for SObjectizer...
Template class for smart reference wrapper on the atomic_refcounted_t.
#define SO_5_THROW_EXCEPTION(error_code, desc)
Enumeration of cooperation deregistration reasons.
const int parent_deregistration
Deregistration because parent cooperation deregistration.
Some reusable and low-level classes/functions which can be used in public header files.
void do_add_notificator_to(intrusive_ptr_t< C > &to, N notificator)
Helper function for notificator addition.
Details of SObjectizer run-time implementations.
bool special_agent_ptr_compare(const agent_t &a, const agent_t &b) noexcept
A special comparison for agent pointers with respect to agent's priorities.
Private part of message limit implementation.
exception_reaction_t
A reaction of SObjectizer to an exception from agent event.
@ inherit_exception_reaction
Exception reaction should be inherited from SO Environment.