SObjectizer  5.7
Classes | Static Private Member Functions | Friends | List of all members
so_5::impl::coop_impl_t Class Reference

An internal class with real implementation of coop's logic. More...

#include <coop.hpp>

Classes

class  deregistration_performer_t
 A helper for coop's deregistration procedure. More...
 
class  registration_performer_t
 

Static Private Member Functions

static void destroy_content (coop_t &coop) noexcept
 Perform all necessary cleanup actions for coop. More...
 
static void do_add_agent (coop_t &coop, agent_ref_t agent_ref)
 Add agent to cooperation. More...
 
static void do_add_agent (coop_t &coop, agent_ref_t agent_ref, disp_binder_shptr_t disp_binder)
 Add agent to the cooperation with the dispatcher binding. More...
 
static void add_reg_notificator (coop_t &coop, coop_reg_notificator_t notificator)
 Add notificator about cooperation registration event. More...
 
static void add_dereg_notificator (coop_t &coop, coop_dereg_notificator_t notificator)
 Add notificator about cooperation deregistration event. More...
 
static exception_reaction_t exception_reaction (const coop_t &coop) noexcept
 Get exception reaction for coop. More...
 
static void do_decrement_reference_count (coop_t &coop) noexcept
 Do decrement reference count for a coop. More...
 
static void do_registration_specific_actions (coop_t &coop)
 Perform actions related to the registration of coop. More...
 
static void do_deregistration_specific_actions (coop_t &coop, coop_dereg_reason_t reason) noexcept
 Perform actions related to the deregistration of coop. More...
 
static void do_final_deregistration_actions (coop_t &coop)
 Perform final deregistration actions for an coop. More...
 
static void do_add_child (coop_t &parent, coop_shptr_t child)
 Perform addition of a new child coop. More...
 
static void do_remove_child (coop_t &parent, coop_t &child)
 Perform removement of a child coop. More...
 

Friends

class so_5::coop_t
 
class so_5::impl::coop_private_iface_t
 

Detailed Description

An internal class with real implementation of coop's logic.

Class coop_t is derived from std::enable_shared_from_this. But when coop_t is exported from a DLL the VC++ compiler issue some warnings about dll-linkage of std::enable_shared_from_this. To avoid these warnings coop_t is just a colletion of data. All coop's logic is implemented by coop_impl_t.

Since
v.5.6.0

Member Function Documentation

◆ add_dereg_notificator()

void so_5::impl::coop_impl_t::add_dereg_notificator ( coop_t coop,
coop_dereg_notificator_t  notificator 
)
staticprivate

Add notificator about cooperation deregistration event.

Parameters
coopTarget coop.
notificatorNotificator to be added.

◆ add_reg_notificator()

void so_5::impl::coop_impl_t::add_reg_notificator ( coop_t coop,
coop_reg_notificator_t  notificator 
)
staticprivate

Add notificator about cooperation registration event.

Parameters
coopTarget coop.
notificatorNotificator to be added.

◆ destroy_content()

void so_5::impl::coop_impl_t::destroy_content ( coop_t coop)
staticprivatenoexcept

Perform all necessary cleanup actions for coop.

Parameters
coopTarget coop.

◆ do_add_agent() [1/2]

void so_5::impl::coop_impl_t::do_add_agent ( coop_t coop,
agent_ref_t  agent_ref 
)
staticprivate

Add agent to cooperation.

Cooperation takes care about agent lifetime.

Default dispatcher binding is used for the agent.

Parameters
coopTarget coop.
agent_refAgent to be bound to the coop.

◆ do_add_agent() [2/2]

void so_5::impl::coop_impl_t::do_add_agent ( coop_t coop,
agent_ref_t  agent_ref,
disp_binder_shptr_t  disp_binder 
)
staticprivate

Add agent to the cooperation with the dispatcher binding.

Instead of the default dispatcher binding the disp_binder is used for this agent during the cooperation registration.

Parameters
coopTarget coop.
agent_refAgent.
disp_binderAgent to dispatcher binder.

◆ do_add_child()

void so_5::impl::coop_impl_t::do_add_child ( coop_t parent,
coop_shptr_t  child 
)
staticprivate

Perform addition of a new child coop.

Parameters
parentParent coop.
childChild to be added.

◆ do_decrement_reference_count()

void so_5::impl::coop_impl_t::do_decrement_reference_count ( coop_t coop)
staticprivatenoexcept

Do decrement reference count for a coop.

Note
This method is marked as noexcept because there is no way to recover if any exception is raised here.
Parameters
coopTarget coop.

◆ do_deregistration_specific_actions()

void so_5::impl::coop_impl_t::do_deregistration_specific_actions ( coop_t coop,
coop_dereg_reason_t  reason 
)
staticprivatenoexcept

Perform actions related to the deregistration of coop.

Note
This method is marked as noexcept because there is no way to recover if any exception is raised here.
Parameters
coopCoop to be deregistered.
reasonReason of coop's deregistration.

◆ do_final_deregistration_actions()

void so_5::impl::coop_impl_t::do_final_deregistration_actions ( coop_t coop)
staticprivate

Perform final deregistration actions for an coop.

Parameters
coopTarget coop.

◆ do_registration_specific_actions()

void so_5::impl::coop_impl_t::do_registration_specific_actions ( coop_t coop)
staticprivate

Perform actions related to the registration of coop.

◆ do_remove_child()

void so_5::impl::coop_impl_t::do_remove_child ( coop_t parent,
coop_t child 
)
staticprivate

Perform removement of a child coop.

Parameters
parentParent coop.
childChild to be removed.

◆ exception_reaction()

exception_reaction_t so_5::impl::coop_impl_t::exception_reaction ( const coop_t coop)
staticprivatenoexcept

Get exception reaction for coop.

Parameters
coopTarget coop.

Friends And Related Function Documentation

◆ so_5::coop_t

friend class so_5::coop_t
friend

◆ so_5::impl::coop_private_iface_t

friend class so_5::impl::coop_private_iface_t
friend

The documentation for this class was generated from the following files: