ACE_Service_Type_Dynamic_Guard Class Reference

A forward service declaration guard. More...

Collaboration diagram for ACE_Service_Type_Dynamic_Guard:

Collaboration graph
List of all members.

Public Member Functions

 ACE_Service_Type_Dynamic_Guard (ACE_Service_Repository &r, ACE_TCHAR const *name)
 ~ACE_Service_Type_Dynamic_Guard (void)

Private Attributes

const ACE_DLL dummy_dll_
size_t repo_begin_
ACE_TCHAR const *const name_
ACE_Service_Type const * dummy_

Detailed Description

A forward service declaration guard.

Helps to resolve an issue with hybrid services, i.e. dynamic services, accompanied by static services in the same DLL. Only automatic instances of SDG are supposed to exist. Those are created during (dynamic) service initialization and serve to:

(a) Ensure the service we are loading is ordered last in the repository, following any other services it may cause to register, as part of its own registration. This is a common case when loading dynamic services from DLLs - there are often static initializers, which register static services.

(b) The SDG instance destructor detects if the dynamic service initialized successfully and "fixes-up" all the newly registered static services to hold a reference to the DLL, from which they have originated.

Constructor & Destructor Documentation

ACE_Service_Type_Dynamic_Guard::ACE_Service_Type_Dynamic_Guard ( ACE_Service_Repository r,
ACE_TCHAR const *  name 

ACE_Service_Type_Dynamic_Guard::~ACE_Service_Type_Dynamic_Guard ( void   ) 


Member Data Documentation

ACE_Service_Type const* ACE_Service_Type_Dynamic_Guard::dummy_ [private]

const ACE_DLL ACE_Service_Type_Dynamic_Guard::dummy_dll_ [private]

ACE_TCHAR const* const ACE_Service_Type_Dynamic_Guard::name_ [private]

ACE_Service_Repository& ACE_Service_Type_Dynamic_Guard::repo_ [private]

size_t ACE_Service_Type_Dynamic_Guard::repo_begin_ [private]

The documentation for this class was generated from the following file:
Generated on Thu Mar 22 07:12:33 2007 for ACE by  doxygen 1.4.7-1